Interator迭代集合,可以进行remove操作。
public class Test {
public static void main(String[] args) {
List<String> lists = new ArrayList<>();
lists.add("Sam");
lists.add("Tom");
lists.add("David");
lists.add("AAA");
Iterator<String> iterator = lists.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals("AAA")) {
iterator.remove();
}
}
for (String str : lists){
System.out.println("for循环:"+str);
}
}
}
用lambda表达式:
public class Test {
public static void main(String[] args) {
List<String> lists = new ArrayList<>();
lists.add("Sam");
lists.add("Tom");
lists.add("David");
lists.add("AAA");
Iterator<String> iterator = lists.iterator();
iterator.forEachRemaining(str -> System.out.println("lambda循环1:"+str));
iterator.forEachRemaining(str -> System.out.println("lambda循环2:"+str));
}
}
iterator使用next()方法跳转到下一步,过程不可逆。
foreach与iterator的优劣
foreach可用于遍历任何集合或数组,而且操作简单易懂,他唯一的不好就是需要了解集合内部类型。
iterator是最强大的,他可以随时修改或者删除集合内部的元素,并且是在不需要知道元素和集合的类型的情况下进行的,当你需要对不同的容器实现同样的遍历方式时,迭代器是最好的选择。
总结
- 当只进行遍历查询的时候可以使用foreach来简化代码
- 如果涉及到删除操作,foreach会出现问题,必须使用Iterator