六.集合的遍历

(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只能访问元素,不能修改

 

posted @ 2021-08-22 21:39  midiyu  阅读(138)  评论(0编辑  收藏  举报