鱼C论坛

 找回密码
 立即注册
查看: 2546|回复: 3

为什么不能迭代

[复制链接]
发表于 2020-5-14 22:17:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 HuangRH 于 2020-5-15 06:29 编辑

ResizingArrayStack.java:

import java.util.Iterator;
public class ResizingArrayStack<Item> implements Iterable<Item>{
        private Item[] a;
        private int N=0;
        public ResizingArrayStack(){
                a=(Item[])new Object[2];
        }
        public void push(Item item){
                if(N==a.length)resize(2*a.length);
                a[N++]=item;
        }
        public Item pop(Item item){
                Item temp= a[--N];
                a[N]=null;
                if(N>0 && N==a.length/4)resize(a.length/2);
                return temp;
        }
        public boolean isEmpty(){
                return N==0;
        }
        public int size(){
                return N;
        }
        private void resize(int max){
                Item[] temp=(Item[])new Object[max];
                for(int i=0;i<a.length;i++){
                        temp[i]=a[i];
                }
                a=temp;
        }
    public Iterator<Item> iterator() {
        return new ReverseArrayIterator();
    }
    private class ReverseArrayIterator implements Iterator<Item> {
        private int i;
        public ReverseArrayIterator() {
            i = N-1;
        }
        public boolean hasNext() {
            return i >= 0;
        }
        public void remove() {
        }
        public Item next() {
            return a[i--];
        }
    }
}

Iterable.java:
import java.util.Iterator;
public interface Iterable<Item> {
        Iterator<Item> iterator();
}


然后这里是主程序
import java.util.Iterator;
public class Main {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ResizingArrayStack<String> a=new ResizingArrayStack<String>();
                a.push("aaa");
                a.push("bbb");
                System.out.println(a.size());
                Iterator<String> i=a.iterator();
                while(i.hasNext()){
                        String s=i.next();
                        System.out.println(s);
                }
                for(String s:a){
                        System.out.println(s);
                }
        }
}

while循环可以,for循环不行,我快死了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-14 22:44:31 | 显示全部楼层
不用看了,我是傻逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 23:10:45 | 显示全部楼层
HuangRH 发表于 2020-5-14 22:44
不用看了,我是傻逼

我看了半天没看出问题,可能我是傻逼吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 06:22:31 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-14 23:10
我看了半天没看出问题,可能我是傻逼吧

不用自己写Iterable.java,我多写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 17:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表