Java遍历集合的所有方式

集合整体架构:

罗政:JAVA 集合整体架构

遍历集合是java集合最基本的操作,主要有4种方式来遍历:

  • 基本的for循环。
  • 增强for循环。
  • Iterator 迭代器遍历。
  • forEach遍历。

下面我构造一个List集合:

List<String> langs = Arrays.asList("java", "python", "golang");


基本的for循环

for (int i = 0; i < langs.size(); i++) {
    System.out.println(langs.get(i));
}

在初始化过程中,必须声明一个整型变量来指定起始点。 这个变量通常充当列表索引。 终止条件是一个表达式,在求值后返回一个布尔值,一旦该表达式求值为假,循环结束。


增强for循环

增强的for循环是一个简单的结构,它允许我们访问列表的每个元素。 它类似于基本的for循环,但可读性更强,结构更紧凑。 因此,是遍历列表最常用的形式之一。

for (String lang : langs) {
    System.out.println(lang); 
}

增强的for循环 是 JAVA提供的语法糖 , 我们用jad反编译一下上面代码的class文件。

jad 下载地址:

链接: pan.baidu.com/s/1xp5C55

https://pan.baidu.com/s/1xp5C55TrePJG7QHUe1dUdg

提取码:jouv

jad用法:

jad.exe Main.class

然后会在当前目录生成 , 用文本编辑器打开得到源代码。

我们发现: 增强for循环其实就是迭代器遍历。


Iterator 迭代器遍历

Iterator模式。它在Java集合中被广泛使用。 迭代器中有两个关键方法,hasNext()和next()方法。

Iterator<String> it = langs.iterator();

while(it.hasNext()) {
    System.out.println(it.next()); 
}

ListIterator

ListIterator允许我们以向前或向后顺序遍历元素列表。 请看实例:

public class Main {
	public static void main(String args[]) {
		List<String> langs = Arrays.asList("java", "python", "golang");
		ListIterator<String> it = langs.listIterator();
		while(it.hasNext()) {
			//移到后面
		    System.out.println(it.next());
		    //又移到前面
		    System.out.println(it.previous());
		    //最终结果 死循环
		}
	}
}

运行死循环:


forEach遍历

从Java 8开始,我们可以使用forEach()方法来迭代列表的元素。 这个方法在Iterable接口中定义,可以接受Lambda表达式作为参数。

public class Main {
	public static void main(String args[]) {
		List<String> langs = Arrays.asList("java", "python", "golang");
		langs.forEach(System.out::println);
	}
}

Stream.forEach()

我们还可以将一组值转换为一个Stream,并且可以访问forEach()、map()或filter()等操作。

public class Main {
	public static void main(String args[]) {
		List<String> langs = Arrays.asList("java", "python", "golang");
		langs.stream().forEach((c) -> System.out.println(c));
	}
}

Lambda 高级用法请见:

罗政:JAVA8 Lambda 不再害怕


强烈推荐一篇 干货,精华 博客:

Java架构师修炼

支付宝打赏 微信打赏

如果文章对您有帮助,您可以鼓励一下作者