集合是一种容器,但我们把数组作为容器时,会发现数组一旦定义,其长度无法更改,不利于我们对容器中的元素进行增删改。所以Java给我们提供了另外一种容器,可以很方便的去操作容器中的元素,这个容器我们叫做集合。
我们可以通过Collection接口中的Iterator<E> iterator()方法,得到可对collection进行迭代的迭代器,用来遍历集合。 遍历需要通过运用迭代器中的方法:
方法功能boolean hasNext()判断是否还有元素可以迭代E next()返回迭代的下一个元素 示例:遍历Integer类型集合 public class 迭代器遍历 { public static void main(String[] args) { Collection<Integer> integers = new ArrayList<>(); integers.add(10); integers.add(20); integers.add(30); integers.add(40); integers.add(50); integers.add(60); Iterator<Integer> iterator = integers.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } } }通过collection子类中的方法E get(int index),用for循环索引并返回索引对应的元素来遍历集合。
public class For循环遍历 { public static void main(String[] args) { Collection<Integer> integers = new ArrayList<>(); integers.add(10); integers.add(20); integers.add(30); integers.add(40); integers.add(50); integers.add(60); ArrayList arrayList= (ArrayList) integers; for (int i = 0; i < arrayList.size(); i++) { System.out.println(arrayList.get(i)); } } } 增强for循环遍历 public class 增强For遍历 { public static void main(String[] args) { Collection<Integer> integers = new ArrayList<>(); integers.add(10); integers.add(20); integers.add(30); integers.add(40); integers.add(50); integers.add(60); for (Integer integer : integers) { System.out.println(integer); } } }两种方法结果是一样的:
List集合的特点是元素有序,允许重复元素
遍历List集合既可以用遍历Collection的三个方法,还可通过List集合专属的迭代器,也就是方法listIterator<E> listIterator()(列表迭代器):
public class 列表迭代器 { public static void main(String[] args) { List<Integer> integers = new ArrayList<>(); integers.add(10); integers.add(20); integers.add(30); integers.add(40); integers.add(50); integers.add(60); ListIterator<Integer> integerListIterator = integers.listIterator(); while (integerListIterator.hasNext()){ System.out.println(integerListIterator.next()); } } }列表迭代器还有一个特有功能,可一反向遍历集合,通过方法boolean hasPrevious()和E previous()(注意:反向遍历前需要用next方法将指针移到最后一个元素):
public class Test { public static void main(String[] args) { List<Integer> integers = new ArrayList<>(); integers.add(10); integers.add(20); integers.add(30); integers.add(40); integers.add(50); integers.add(60); ListIterator<Integer> integerListIterator = integers.listIterator(); while (integerListIterator.hasNext()){ integerListIterator.next(); } while (integerListIterator.hasPrevious()){ System.out.println(integerListIterator.previous()); } } }