1.摘要

在JAVA语言中,list、map与set是存储数据使用较多的几种形式。本文将阐述这些集合的特性及如何进行数据遍历的几种方式。

2.集合类图


(1)List集合:以一种特定的顺序存储
Vector:底层是数组,查询快,增删慢。
ArrayList:与Vector类似,底层也是数组,且可以动态增长。
LinkedList:底层是数组加链表结构,存储的数据有序。
(2)Set集合:存储的元素中不允许有重复元素。
HashSet:底层数据结构是哈希表。
SortedSet:此接口主要用于排序操作,实现此接口的子类都属于排序类。
LinkedHashSet:是由哈希表和链表组成,保证存储数据的有序性。
TreeSet:属于SortedSet接口的实现类,它确保集合元素属于排序状态。
(3)Map集合:存储的每组数据都是成对的“键-值”
HashTable: 底层数据结构是哈希表。线程安全,但是效率较低。
HashMap:底层数据结构同样是哈希表,它是无序的,即不能保证key-value对的顺序,判断两个key是否相等的标准是利用equals进行比较,返回结果为true则证明相等。
LinkedHashMap:底层数据结构由链表和哈希表组成,保证了存储数据的有序性。
SortedMap:与SortedSet类似,可以对Map中的数据实现一个排序功能。
TreeMap:TreeMap就是一个红黑树数据结构,每一个key-value对即作为红黑树一个节点。TreeMap存储key-value对(节点)时,需要根据key对及诶单进行排序。TreeMap可以包含保证所有的key-value对都处于有序状态。同样,TreeMap也有两种排序方式:自然排序,定制排序。

3.List集合遍历

1)for循环遍历(需要获取index的情况)

for(int i=0;i<list.size();i++){list.add(i);
}

(2)增强for循环遍历

for(Integer integer : integers){
System.out.println(integer);
}

(3)iterator遍历

Iterator<String> it = list.iterator();
while(it.hasNext()){String x = it.next();System.out.println(x);
}

4.Set集合遍历

(1)增强for循环遍历

Set<String> sets = new HashSet<String>();
sets.add("jack");
sets.add("tony");
sets.add("bad");
//1.增强for循环遍历
for (String s:sets){System.out.println(s);
}

(2)迭代器遍历

Iterator<String> iterators = sets.iterator();
while (iterators.hasNext()) {
String value= iterators.next();System.out.println(value);
}

(3)集合类通用的遍历方式(早期就存在)

for (Iterator it2 = sets.iterator();it2.hasNext();){System.out.println(it2.next());
}

(4)jdk1.8之后

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

5.Map集合遍历

(1)增强for循环遍历(使用较多)

for(String s:maps.keySet()) {System.out.println(s+":"+maps.get(s));
}

(2)迭代器遍历(根据entrySet来遍历)

调用entrySet方法将Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型,然后遍历Set集合,提前键和值。

Iterator<Map.Entry<String, String>> entries = maps.entrySet().iterator();
while (entries.hasNext()){
Map.Entry<String,String> map = entries.next();
System.out.println(map.getKey()+":"+map.getValue());
}

(3)迭代器遍历(根据keySet来遍历)

Set<String> names = maps.keySet();
Iterator<String> name = names.iterator();
while(name.hasNext()) {
String key = name.next();
System.out.println(key +":"+maps.get(key));
}

(4)增强for结合Map.Entry(容量大时使用)

for(Map.Entry<String, String> s:maps.entrySet()){System.out.println(s.getKey()+":"+s.getValue());
}


(5)Lambda表达式遍历

    Map<String, String> maps = new HashMap<>();maps.put("person1", "168");maps.put("person2", "160");maps.put("person3", "172");maps.put("person4", "170");maps.forEach((key, value) -> System.out.println("key:" + key + ",value:" + value));

运行结果如下:

Lambda中foreach的本质还是先将Map集合转成entrySet,然后进行遍历返回,源码如下:

 default void forEach(BiConsumer<? super K, ? super V> action) {Objects.requireNonNull(action);for (Map.Entry<K, V> entry : entrySet()) {K k;V v;try {k = entry.getKey();v = entry.getValue();} catch(IllegalStateException ise) {// this usually means the entry is no longer in the map.throw new ConcurrentModificationException(ise);}action.accept(k, v);}}

6.总结

关于List、Map、Set的遍历方式使用最多的就是利用增强for循环和迭代器(Iterator)来进行,当数据量较大时,可以迭代器方式,效率会相对高一些,具体使用可根据场景需要进行筛选。关于Collection集合的继承子类还有Queue等,需要了解可自行查阅相关资料。

7.参考文献

1.https://blog.csdn.net/yeshengchao/article/details/84000644
2.https://juejin.im/post/59c4bfd76fb9a00a62713fc7

list、Map、Set遍历方式总结相关推荐

  1. Java8高效遍历map_Java8中Map的遍历方式总结

    在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行. public class LambdaMap { private Map ma ...

  2. Java集合篇:Map常用遍历方式 以及 性能对比

    一.Map集合常用的遍历方式: 遍历Map集合的常用方式有三种:使用keySet的方式,使用entrySet的方式,使用values()取值的方式,这三种方式中,都有对应的for循环遍历和Iterat ...

  3. JAVA进阶知识点总结 4-Map HashMap LinkedHashMap Map的遍历方式 斗地主案例

    01_第一章:回顾_三种集合的存储方式: 02_第一章:Map集合_常用方法: 1).Map集合的特点: 1).双列集合–键值对存储: 2).键不能重复–值可以重复: 2).Map的两个子类: Map ...

  4. Map集合遍历方式--遍历键找值方式、遍历键值对方式

    键找值方式:即通过元素中的键,获取键所对应的值. 分析步骤: 1. 获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键.方法提示: keyset() 2. 遍历键的Set集合,得 ...

  5. Java Map遍历方式的选择

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

  6. Map集合的遍历方式

    1.Map集合的特点 Map集合每次存储两个元素,键不可重复,值可以重复. 2.遍历的方式 Map集合遍历方式1 得到所有的键存放在set集合中–KeySet() 遍历键所在的集合,得到每一个键. 通 ...

  7. 关于Java中的Map遍历方式比较

    最近在看阿里巴巴最新版的Java开发手册,里面的内容还是很值得去阅读学习,下面是我对Java中Map的遍历方式的比较和总结: 第一种:使用entrySet()的形式来遍历,也是效率高,推荐使用的一种遍 ...

  8. 常用的Map遍历方式

    常用的遍历Map集合遍历方式大概有下面几种(HashMap<K,V>) 1.获得key的set集合,通过map.get(Object key)获得key和value 2.通过遍历键值对对象 ...

  9. Java中Map的三种遍历方式:keySet、 entrySet、forEach

    前言 最近在看<阿里巴巴Java开发手册(华山版)>,看到了关于Map的遍历方式,手册上写的很详细,我这里用代码再来展示一遍. 代码 public static void main(Str ...

  10. Java Map集合常用API及3种遍历方式

    1.map的常用API map是双列集合的顶层接口,是所有的双列集合都可以继承使用 2.使用Map集合 //1.创建Map集合的对象Map<String, String> m = new ...

最新文章

  1. rsync+inotify
  2. 训练和验证准确性_通过沉浸式虚拟现实观察动作增强运动想象训练
  3. CSS Sprites图片拼合生成器实现思路
  4. 面试总结-百度(1)
  5. html 删除记录,添加删除记录.html
  6. android用qq浏览器打开微信网页版,QQ浏览器怎么打开微信小程序?
  7. python递归函数的思想_Python递归函数实例讲解
  8. 自训练:超越预训练,展现强大互补特性的上分新范式!
  9. c语言 一元多项式乘法,[内附完整源码和文档] 基于C语言实现的一元多项式的计算...
  10. BooKu手机电子书阅读器,正式推出了
  11. conda install labelimg 预定标签类别
  12. Employee类的层级结构
  13. 路由器选华硕还是tp_ASUS/Linksys/TPLINK三套路由测试,Linksys最强,华硕最差
  14. 大火的何铠明:MAE——用于计算机视觉的可扩展自监督学习神器
  15. 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——7 - Kids On The Track(生死时刻)
  16. 珠玉落盘【珠盘玉落】
  17. 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)
  18. 用计算机创造一个宇宙,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的,真实世界...
  19. 为了热爱Jeez,请停止在软件中使用正则表达式
  20. 利用conda安装包、卸载包、升级包、查看包信息等操作

热门文章

  1. 办公科研软件及BIM系列软件下载(持续更新中...)
  2. 百度网盘网页倍速播放以及高速下载
  3. 一、win10 安装PR,但是系统弹出command line option syntax error
  4. Pixhawk学习5.2——传感器标定之陀螺仪
  5. 闲鱼神探——线上问题定位与快速解决
  6. 3D建模教程讲解!3ds Max电吉他制作
  7. 时间的计算的技术支持
  8. 劳易测光通迅DDLS 508 120.3的微调
  9. 关于双频/多频腔体滤波器的相关paper汇总
  10. 《南希财智对话》初识李亦非