为什么不能迭代
本帖最后由 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;
}
public void push(Item item){
if(N==a.length)resize(2*a.length);
a=item;
}
public Item pop(Item item){
Item temp= a[--N];
a=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;
for(int i=0;i<a.length;i++){
temp=a;
}
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;
}
}
}
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循环不行,我快死了{:10_266:} 不用看了,我是傻逼{:10_266:} HuangRH 发表于 2020-5-14 22:44
不用看了,我是傻逼
我看了半天没看出问题,可能我是傻逼吧{:10_266:} 永恒的蓝色梦想 发表于 2020-5-14 23:10
我看了半天没看出问题,可能我是傻逼吧
不用自己写Iterable.java,我多写了{:10_266:}
页:
[1]