六.集合的遍历

本文详细介绍了Java集合框架中List、Set、Map的遍历方法,包括forEach、迭代器以及ListIterator的使用。强调了在遍历过程中进行增删操作可能导致的异常,并提供了HashMap的多种遍历策略,指出通过entrySet遍历通常是性能最优的选择。同时,指出forEach只能访问元素而不能修改集合。

(1)对于List,Set,Map。每个集合都有两种遍历方法:forEach,迭代器(forEach的底层实现也是迭代器)

(2)List的遍历,用迭代器的话,推荐用ListIterator

(3)迭代器遍历的步骤:

    1.获取迭代器:iterator() 2.hasNext() 3.next()

(4)对Map遍历:可以遍历key和value,也可以遍历entry

    不管采用forEach还是Iterator遍历,都首先要获得entry集(键值对集),然后再遍历(遍历key:getKey(),遍历value:getValue())

   方法:hashMap.entrySet(),entry.getKey(),entry.getValue()

for循环,forEach,迭代器

一.ArrayList

1.for循环

2.迭代器Iterator

迭代器只能向后遍历,不能增,可以删

3.forEach(迭代器的变种)

4.ListIterator

相比于 Iterator 迭代器,这里的 ListIterator 向前向后都可以遍历,可增删

二.LinkedList

1.for循环

2.迭代器

1   Iterator<String> listIt = linkedList.listIterator();
2   while(listIt.hasNext()){
3      System.out.print(listIt.next()+" ");//A B C D
4  }

注意:如果想一边迭代,一边用集合自带的方法进行删除或者新增操作,都会抛出异常。

3.forEach(底层实现也是使用的迭代器)

三.HashSet

1.forEach

2.迭代器

四.HashMap

1.分别获取 key 集合和 value 集合

1 //1、分别获取key和value的集合
2 for(String key : map.keySet()){
3     System.out.println(key);
4 }
5 for(Object value : map.values()){
6     System.out.println(value);
7 }

2.获取 key 集合,然后遍历key集合,根据key分别得到相应value

1  //2、获取key集合,然后遍历key,根据key得到 value
2  Set<String> keySet = map.keySet();
3  for(String str : keySet){
4      System.out.println(str+"-"+map.get(str));
5  }

3.得到 Entry 集合,然后遍历 Entry

1 //3、得到 Entry 集合,然后遍历 Entry
2 Set<Map.Entry<String,Object>> entrySet = map.entrySet();
3 for(Map.Entry<String,Object> entry : entrySet){
4     System.out.println(entry.getKey()+"-"+entry.getValue());
5 }

4.迭代

1 //4、迭代
2 Iterator<Map.Entry<String,Object>> iterator = map.entrySet().iterator();
3 while(iterator.hasNext()){
4     Map.Entry<String,Object> mapEntry = iterator.next();
5     System.out.println(mapEntry.getKey()+"-"+mapEntry.getValue());
6 }

  基本上使用第三种方法是性能最好的,

  第一种遍历方法在我们只需要 key 集合或者只需要 value 集合时使用;

  第二种方法效率很低,不推荐使用;

  第四种方法效率也挺好,关键是在遍历的过程中我们可以对集合中的元素进行删除。

一些方法:keySet(),values(),entrySet()---getKey(),getValue()

5.forEach只能访问元素,不能修改

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值