Collection的遍历方式

前言:为什么不用for循环遍历Collection集合?

因为用for循环遍历集合,集合必须支持索引,而Collection并没有规定集合的索引问题。只有List系列的集合才支持索引。

一、迭代器

1.认识迭代器

迭代器概述:是用来遍历集合的专用方式(数组没有迭代器),在java中迭代器的代表是Iterator

Collection集合获取迭代器对象
方法名称说明
Iterator<E> iterator()返回集合中的迭代器对象
Iterator迭代器中的常用方法
方法名称说明
boolean hasNext()询问当前位置是否有元素存在,存在返回true,不存在返回false
E next()获取当前位置的元素,并同迭代器对象指向下一个元素处

 2.案例讲解:

package Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionTest02 {
	public static void main(String[] args) {
		//掌握Collection集合的三种遍历方式
		Collection<String> c  = new ArrayList<>();
		c.add("小明");
		c.add("小刘");
		c.add("元桑");
		c.add("小亚桑");
		c.add("小小捷");
		System.out.println(c);
        System.out.println("------------------------------------");
		//一、使用迭代器
		Iterator<String> iterator = c.iterator();//获取迭代器对象
		while (iterator.hasNext()) {
			String str= iterator.next();
			System.out.println(str);
		}
	}
}

二、增强for循环

1.格式

for(元素的数据类型 变量名 : 数组或者集合){

}

 增强for循环可以遍历集合或数组,其本质就是迭代器遍历集合的简化写法

2.案例讲解:

同上面:
		System.out.println("----------------------------------------");
		//二、增强for循环
		for (String ele : c) {
			System.out.println(ele);
		}
	}
}
输出结果:
---------------------------------------
小明
小刘
元桑
小亚桑
小小捷

三、Lambda表达式遍历Collection集合 

1第一步:

因为Consumer是一个接口,不可以创建对象,所以要创建匿名内部类对象

2.源码和原理

 

3.案例

//三、Lambda表达式遍历Collection集合 
		//defult void forEach(Consumer <? super T>)action :结合Lambda表达式遍历集合
		
		//1第一步:因为Consumer是一个接口,不可以创建对象,所以要创建匿名内部类对象
		c.forEach(new Consumer<String>() { //ctrl+左键-->看源码
			@Override
			public void accept(String t) {	
			}
		});
		//第2步:开始遍历		从上到下代码依次简化
		c.forEach((String s) ->	{
			System.out.println(s);
		});
		System.out.println("-----------------------------------------");

		c.forEach(s ->	{
			System.out.println(s);
		});
		System.out.println("-----------------------------------------");

		c.forEach(s ->	System.out.println(s));
		System.out.println("-----------------------------------------");

		c.forEach(System.out::println);

用 Lambda表达式遍历Collection集合 并不是十分便利(与增强for循环相比),而用Lambda表达式遍历Map集合时会很便利。  

一个人静静坐在电脑面前写代码的感觉,那是什么感觉?那是武林高手闭关修炼的感觉。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值