Java 集合
集合
1️⃣集合的概念
①集合在java.util包路径下,在该包路径下提供了很多的接口以及实现类。
②集合类型主要包括3种:set(集)、list(列表) 和map(映射)。
③集合中存放的都是对象的引用,而不是对象的本身。
2️⃣Java集合框架图
注意: 虚线对应的是接口,实现对应的是实现类。
基于集合框架图可知:顶层的接口 Collocation和Map
Collocation
接口表示存储的是单个数据组成的集合。
Map
接口表示存储的是key-value的键值对的集合。
3️⃣相关接口介绍
Collection
接口:主要有三个接口
List接口: 允许存储重复的元素的集合
Set接口: 不允许存储重复的元素的集合,可以达到去重的目的
Queue接口: 可以重复。主要用来存储数据,模拟队列(先进先出)、模拟栈(先进后出)、优先级队列
Map
接口
存储的数据是以键值对形式存储
SortMap接口: 对于元素进行排序
4️⃣实现类特点
List接口的实现类
ArrayList
查询速度快,线程不安全,底层基于数组来存储元素,封装一个动态的Object[]数组,是一种顺序存储的集合(元素存储是按照插入顺序有序)
LinkedList
增删速度快,线程不安全,底层是一个双向链表实现,元素也是插入有序
Vector
线程安全,查询增删速度慢,已经被ArrayList替代
Set接口的实现类
HashSet
底层数据结构是基于HashMap实现的,不按照集合中元素的顺序,即不能保证数据和插入的顺序一致,线程不安全
LinkedHashSet
底层是基于LinkedHashMap实现的,线程不安全,能保证数据的顺序和插入顺序一致
TreeSet
底层基于TreeMap集合实现,线程不安全,数据有序的(按照属性的特征排序)
👀小插曲:ArrayList
和TreeSet
存储的数据都是有序的,那么两者有什么区别呢?ArrayList
存储的数据是按照插入顺序有序的,而TreeSet
存储的数据是按照数据的属性特征排序的,举一个栗子🌰,两者都有序插入数据2、3、2,那么在ArrayList
中的顺序就是2、3、2,在TreeSet
中顺序就是2、2、3。
Map接口的实现类
HashMap
底层是一个哈希表结构,线程不安全的,允许key-value为null,key不能重复(哈希表结构相关),数据是无序的
Hashtable
和HashMap类似,底层是哈希表接口,线程是安全的,key-value不能为null
LinkedHashMap
是HashMap的子类 。可以保证数据是插入有序的
TreeMap
底层是二叉树:红黑树;线程不安全的,数据可以基于元素特征排序。
相关文章
- java面试④数据库部分
- java集合(3)- Java中的equals和hashCode方法详解
- java代码调试,打印代码方法执行时间(毫秒级)
- [LeetCode][Java] Substring with Concatenation of All Words
- Linux 之安装Java教程
- java安装1.8和1.7,报错:Error: Registry key 'SoftwareJavaSoftJava Runtime Environment'CurrentVers
- java基础——Vector集合知识点
- Java集合常见面试题汇总
- Java线程池实现原理及其在美团业务中的实践
- Java集合框架的知识总结(1)
- Java面试集合(三)
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
- Java新集合
- Java中泛型在集合框架中的应用
- JAVA好书之《深入理解Java虚拟机》
- java数组初始化
- Java集合细节(三):subList的缺陷
- java_线程的几种状态
- Java集合篇:List总结
- Java学习---JAVA的类设计
- 憋了许久,终究还是对Java集合下手了!最全List、Set、Map集合讲解,内含集合导图