迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
- 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
- 使用next()获得序列中的下一个元素。
- 使用hasNext()检查序列中是否还有元素。
- 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
我们先写一个简单的例子
public class IteratorDemo {
public static void main(String[] args) {
//先创建一个list集合
List<String> list = new ArrayList<>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
//调用
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
//循环输出一下
System.out.println(s);
}
}
}
输出的结果是:
上面这种是while循环的。还可以使用for循环。
//for循环的迭代器
for (Iterator it = list.iterator(); it.hasNext();) {
//迭代器的next方法返回值类型是Object,所以要记得类型转换。
String next = (String) it.next();
System.out.println(next);
}
list特有的迭代器
//list特有的迭代器
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()) {
String s = (String) listIterator.next();
//循环输出一下
System.out.println(s);
}
倒叙排列输出:注意,需要正序排列之后再倒叙排列。
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()) {
String s = (String) listIterator.next();
//循环输出一下
System.out.println(s);
}
//倒叙
while (listIterator.hasPrevious()) {
String next = (String) listIterator.previous();
System.out.println(next);
}
Set方法:用指定元素替换 next 或 previous 返回的最后一个元素
listIterator.next();//111
listIterator.next();//222
System.out.println(listIterator.next());//333
//用指定元素替换 next 或 previous 返回的最后一个元素
listIterator.set("555");//会将333替换成555
System.out.println(list);
输出结果为:
add方法将指定的元素插入列表,该元素直接插入到 next 返回的元素的后面
listIterator.next();//111
listIterator.next();//222
System.out.println(listIterator.next());//333
listIterator.add("555");// 333后面插入了555
System.out.println(list);
输出结果为:
remove:清空集合
while (iterator.hasNext()) {
iterator.next();
iterator.remove();
}
System.out.println(iterator);
输出的结果是这样的:
如有雷同,全都是你对