三大集合:List、Map、Set
一、结构特点
(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相关推荐
- 三大集合:List、Map、Set的区别与联系
List.Map.Set的区别与联系 一.结构特点 List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合: List中存储的数据是有顺序的,并且值允许重复:Map中存储的数据是 ...
- java三大集合框架(面试知识储备精华篇)
java三大集合框架 : set list map 如上图 set list 都属于collection的子接口(collection为顶层接口) Map 不属于collection接口 Se ...
- 深入分析 Jdk - 集合容器 Map 与 Set
SegmentFault 不兼容部分 markdown,详情请见 深入分析 Jdk - 集合容器 Map 与 Set
- 《深入理解ES6》笔记——Set集合与Map集合(7)
Map和Set都叫做集合,但是他们也有所不同.Set常被用来检查对象中是否存在某个键名,Map集合常被用来获取已存的信息. Set Set是有序列表,含有相互独立的非重复值. 创建Set 既然我们现在 ...
- 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )
文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...
- c++ map iterator 获取key_Java集合框架——Map接口
第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...
- java基础集合简介Map(三)下
From: https://www.cnblogs.com/douyu2580860/p/8358768.html --Map接口简介 今天来看一看map集合,map映射接口,用于存放键值对,< ...
- Java—一篇读懂java集合(Collection/Map)及Lambda表达式
集合简介 在集合类之前,我们使用数组存储,数组既可以存储基本数据类型的值,也可以存储对象(对象的引用变量),但是集合只能存储对象. Java集合类似于一种容器,将同类型的对象(实际为对象引用) ...
- Spring按类型自动装配注入数组、集合、Map
Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...
最新文章
- C++乘法的int越界问题
- 设计模式六大原则(6)——开闭原则
- 深度学习在gilt应用——用图像相似性搜索引擎来商品推荐和服务属性分类
- 流利说递交招股书:上半年亏1.8亿 王翌持股27.9%
- concat拼接的坑 mysql_DNSlog注入踩坑记录:
- word List 14
- transition的唧唧歪歪
- 添加notepad到右键菜单栏
- PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日发布!都有哪些新特性?
- Executors.newFixedThreadPool(NTHREADS)线程池数量设置多少合适?
- java学习(eclipse环境的使用)
- 觅知网ppt模板_有哪些相见恨晚的PPT模板网站?
- 计算机取消右键粘贴,复制粘贴文件后鼠标右击取消粘贴功能的简单方法介绍
- 没有卑微的工作,只有卑微的工作态度
- 电器元件——LM7805
- SpringBoot2 学习5集成Thymeleaf
- 云原生微服务架构实战精讲第三节 示例用户场景分析和领域驱动DDD
- Newtonsoft.Json Json.NET - Newtonsoft
- 头歌 6. Pandas合并数据集
- mysql知识点系列-数据目录(Data目录)下文件类型一窥究竟