我是靠谱客的博主 潇洒小馒头,最近开发中收集的这篇文章主要介绍java基础中三种对集合遍历的区别(迭代器使用),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

  1. 迭代方式 格式: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基础中三种对集合遍历的区别(迭代器使用)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部