一、结构特点

(1)List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;

(2)List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)。

二、实现类

1.List接口

(1)LinkedList

基于链表实现,链表内存是散列的,增删快,查找慢;

(2)ArrayList

基于数组实现,非线程安全,效率高,增删慢,查找快;

(3)Vector

基于数组实现,线程安全,效率低,增删慢,查找慢;

(4)Stack

Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。

2.Map接口

(1)HashMap

基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键;

(2)HashTable

线程安全,低效,不支持 null 值和 null 键;

(3)LinkedHashMap

是 HashMap 的一个子类,保存了记录的插入顺序;

(4)TreeMap 接口

TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序

3. Set接口

(1)HashSet

底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;

(2)LinkedHashSet

继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap

(3)TreeSet

TreeSet是二叉树实现的,基于TreeMap,生成一个总是处于排序状态的set,内部以TreeMap来实现,不允许放入null值。它是使用元素的自然顺序对元素进行排序,或者根据创建Set时提供的 Comparator 进行排序,具体取决于使用的构造方法。

三、总结

(1)List、Set都是继承自Collection接口,Map则不是

(2)List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)

(3)Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

(4)Map适合储存键值对的数据

(5)线程安全集合类与非线程安全集合类 :

LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;

HashMap是非线程安全的,HashTable是线程安全的;

StringBuilder是非线程安全的,StringBuffer是线程安全的。

三大集合:List、Map、Set相关推荐

  1. 三大集合:List、Map、Set的区别与联系

    List.Map.Set的区别与联系 一.结构特点 List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合: List中存储的数据是有顺序的,并且值允许重复:Map中存储的数据是 ...

  2. java三大集合框架(面试知识储备精华篇)

    java三大集合框架 :  set  list   map 如上图 set list 都属于collection的子接口(collection为顶层接口) Map 不属于collection接口 Se ...

  3. 深入分析 Jdk - 集合容器 Map 与 Set

    SegmentFault 不兼容部分 markdown,详情请见 深入分析 Jdk - 集合容器 Map 与 Set

  4. 《深入理解ES6》笔记——Set集合与Map集合(7)

    Map和Set都叫做集合,但是他们也有所不同.Set常被用来检查对象中是否存在某个键名,Map集合常被用来获取已存的信息. Set Set是有序列表,含有相互独立的非重复值. 创建Set 既然我们现在 ...

  5. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )

    文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...

  6. c++ map iterator 获取key_Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  7. java基础集合简介Map(三)下

    From: https://www.cnblogs.com/douyu2580860/p/8358768.html --Map接口简介 今天来看一看map集合,map映射接口,用于存放键值对,< ...

  8. Java—一篇读懂java集合(Collection/Map)及Lambda表达式

    集合简介   在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象.   Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...

  9. Spring按类型自动装配注入数组、集合、Map

    Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...

最新文章

  1. C++乘法的int越界问题
  2. 设计模式六大原则(6)——开闭原则
  3. 深度学习在gilt应用——用图像相似性搜索引擎来商品推荐和服务属性分类
  4. 流利说递交招股书:上半年亏1.8亿 王翌持股27.9%
  5. concat拼接的坑 mysql_DNSlog注入踩坑记录:
  6. word List 14
  7. transition的唧唧歪歪
  8. 添加notepad到右键菜单栏
  9. PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日发布!都有哪些新特性?
  10. Executors.newFixedThreadPool(NTHREADS)线程池数量设置多少合适?
  11. java学习(eclipse环境的使用)
  12. 觅知网ppt模板_有哪些相见恨晚的PPT模板网站?
  13. 计算机取消右键粘贴,复制粘贴文件后鼠标右击取消粘贴功能的简单方法介绍
  14. 没有卑微的工作,只有卑微的工作态度
  15. 电器元件——LM7805
  16. SpringBoot2 学习5集成Thymeleaf
  17. 云原生微服务架构实战精讲第三节 示例用户场景分析和领域驱动DDD
  18. Newtonsoft.Json Json.NET - Newtonsoft
  19. 头歌 6. Pandas合并数据集
  20. mysql知识点系列-数据目录(Data目录)下文件类型一窥究竟

热门文章

  1. 五折交叉验证/K折交叉验证, python代码到底怎么写
  2. 最简单DIY基于C#和51单片机上下位机一体化的PCA9685舵机控制程序
  3. OSPF单区域配置实验
  4. Linux压缩包,解压缩包,vim,yum仓库,zip,用户管理
  5. ora-27100产生的原因分析
  6. 小程序: webview与小程序之间的跳转
  7. AD620单电源应变片测量电路分析
  8. python打开qq并登录_使用Python进行QQ批量登录的实例代码
  9. 真·抢显卡!四川一团伙持 40cm 长刀入室抢劫 50 余张显卡,总价值超 10 万元
  10. 设计模式(二)—— 创建型模式