概述
java基础中三种对集合遍历的区别(迭代器使用)
1. 最常用最原始的 for循环遍历方法
案例:
import java.util.ArrayList;
public class DieDaiDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i)+" ");
if(list.get(i).equals("bb")) {
list.add("ff");//由于每次遍历都需要访问集合长度,所以在循环内可以添加和移除元素
list.remove("dd");
}
}
输出结果
aa
bb
cc
ff
结论:for循环每次遍历多需要访问list长度,故可以在循环遍历中操作元素(增删)
2. for循环增强方法
基本格式:for(String str:list){System.out.print(str+" ");}
同样案例:
public class DieDaiDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
for(String x:list) {
System.out.println(x);
if(x.equals("bb")) {
list.add("ff");//报错
list.remove("bb");//报错
}
}
}
输出结果:
aa
bb
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:996)
at peixunkejian/peixunkejian.DieDaiDemo.main(DieDaiDemo.java:20)
结论:for增强遍历在进入循环前已经确定好个数,所以不可以在循环体里面add或者remove
- 迭代方式 格式:
Iterator<String> iterator=list.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+" "); }
同样案例:
import java.util.ArrayList;
import java.util.Iterator;
public class DieDaiDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
Iterator<String> it =list.iterator();
while(it.hasNext()) {
String str =it.next();
//System.out.println(it.next()+" ");//it.next已经请求查询下一个元素了这里不能在重复使用
System.out.println(str+" ");
if(str.equals("bb")) {
list.add("ff");//报错
list.remove("bb");//报错
}
}
输出结果:
aa
bb
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:996)
at peixunkejian/peixunkejian.DieDaiDemo.main(DieDaiDemo.java:31)
结论:在进入迭代器循环前,集合长度已经确认了
所以有的时候我们不太确定集合中到底有多少个元素,这个时候要想遍历集合,就可以使用迭代器
最后
以上就是潇洒小馒头为你收集整理的java基础中三种对集合遍历的区别(迭代器使用)的全部内容,希望文章能够帮你解决java基础中三种对集合遍历的区别(迭代器使用)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复