我如何使用java的每个循环与自定义类?

我认为大多数编码人员使用的代码如下所示:

ArrayList<String> myStringList = getStringList(); for(String str : myStringList) { doSomethingWith(str); } 

我怎样才能利用我自己的类的每个循环? 有一个我应该实现的接口?

你可以实现Iterable 。

这是一个例子 。 这不是最好的,因为对象是自己的迭代器。 不过,它应该给你一个关于发生了什么的想法。

你必须实现Iterable 接口 ,也就是说,你必须实现这个方法

 class MyClass implements Iterable<YourType> { Iterator<YourType> iterator() { return ...;//an iterator over your data } } 

for循环的短版本( T代表我的自定义types):

 for (T var : coll) { //body of the loop } 

被翻译成:

 for (Iterator<T> iter = coll.iterator(); iter.hasNext(); ) { T var = iter.next(); //body of the loop } 

而我的集合的迭代器可能如下所示:

 class MyCollection<T> implements Iterable<T> { public int size() { /*... */ } public T get(int i) { /*... */ } public Iterator<T> iterator() { return new MyIterator(); } class MyIterator implements Iterator<T> { private int index = 0; public boolean hasNext() { return index < size(); } public type next() { return get(index++); } public void remove() { throw new UnsupportedOperationException("not supported yet"); } } }