Java的集合类可以使用for … each循环
我们以List为例 其实一个java编译器并不知道如何遍历一个List
编译器只是把一个for … each 通过Iterator改写成普通的for循环
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String str : list) {
System.out.println(str);
}
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
String str = iterator.next();
System.out.println(str);
}
如何让自己编写的集合类使用for..each循环
我们自己编写一个集合类ReadOnlyList
public class IteratorTest {
public static void main(String[] args) {
ReadOnlyList<String> readOnlyList = new ReadOnlyList<>("a","b","c");
for (String str : readOnlyList){
System.out.println(str);
}
}
}
public class ReadOnlyList<E> implements Iterable<E> {
E[] array;
@SafeVarargs
public ReadOnlyList(E... array) {
this.array = array;
}
@Override
public Iterator<E> iterator() {
return new ReadOnlyIterator();
}
class ReadOnlyIterator implements Iterator<E> {
int index = 0;
@Override
public boolean hasNext() {
return index < ReadOnlyList.this.array.length;
}
@Override
public E next() {
E e = array[index];
index++;
return e;
}
}
}
运行结果
a
b
c
手机扫一扫
移动阅读更方便
你可能感兴趣的文章