问题代码如下:
我有什么办法可以把代码改成可运行的方法,遍历输出集合里内容,要用foreach,不用普通for。
package test;
 
public class MyCollection<T>{
    private ArrayList<T> bucket;//除了继承别人不能用
 
    public MyCollection(){
        bucket = new ArrayList();
    }
 
    public int size() {
        return bucket.size();
    }
 
    public boolean isEmpty() {
        return bucket.isEmpty();
    }
 
    public boolean contains(T o) {
        return bucket.contains(o);
    }
 
    public boolean add(T e) {
        return bucket.add(e);
    }
 
    public boolean remove(T o) {
        return bucket.remove(o);
    }   
 
}
package test;public class ForEachTest {  
 
    public static void main(String args[]){
        MyCollection<String> myCollection = new MyCollection<String>();
        myCollection.add("Java");
        myCollection.add("Scala");
        myCollection.add("Groovy");        for(String language: myCollection){// myCollection.bucket
            System.out.println(language);
        }
    }
}

解决方案 »

  1.   

    java规范要求,能用foreach循环遍历的类必须实现Iterable接口。
    class MyCollection<T> implements Iterable<T>{
        private List<T> bucket;//除了继承别人不能用
     
        public MyCollection(){
            bucket = new ArrayList<T>();
        }
     
        public int size() {
            return bucket.size();
        }
     
        public boolean isEmpty() {
            return bucket.isEmpty();
        }
     
        public boolean contains(T o) {
            return bucket.contains(o);
        }
     
        public boolean add(T e) {
            return bucket.add(e);
        }
     
        public boolean remove(T o) {
            return bucket.remove(o);
        } @Override
    public Iterator<T> iterator() {
    return bucket.iterator();
    }   
     
    }public class ForEachTest {  
        public static void main(String args[]){
            MyCollection<String> myCollection = new MyCollection<String>();
            myCollection.add("Java");
            myCollection.add("Scala");
            myCollection.add("Groovy");        for(String language: myCollection){// myCollection.bucket
                System.out.println(language);
            }
        }
    }
      

  2.   

    啥意思?上述代码已经是可运行的,因为内层数据结构List实现了Iterable接口,将其传递出去就能达到需要的效果