Java容器相关知识
-
- [0. 前言](#0. 前言)
- [1. Collection接口](#1. Collection接口)
-
- [1.1. List接口](#1.1. List接口)
-
- [1.1.1. ArrayList](#1.1.1. ArrayList)
- [1.1.2. LinkedList](#1.1.2. LinkedList)
- [1.1.3. Vector](#1.1.3. Vector)
- [1.1.4. Stack](#1.1.4. Stack)
- [1.2. Set接口](#1.2. Set接口)
-
- [1.2.1. HashSet](#1.2.1. HashSet)
- [1.2.2. LinkedHashSet](#1.2.2. LinkedHashSet)
- [1.2.3. TreeSet](#1.2.3. TreeSet)
- [1.3. Queue接口](#1.3. Queue接口)
-
- [1.3.1. PriorityQueue](#1.3.1. PriorityQueue)
- [1.3.2. LinkedList](#1.3.2. LinkedList)
- [2. Map接口](#2. Map接口)
-
- [2.1. HashMap](#2.1. HashMap)
- [2.2. TreeMap](#2.2. TreeMap)
- [2.3. LinkedHashMap](#2.3. LinkedHashMap)
- 3.常见用法------增/删/改/查/排序/容量
- 后记
- 参考文章
0. 前言
容器,顾名思义,就是java中存储数据的常用结构,在C++中我们接触过数组、链表等等,在java中,容器则进一步规范化,形成了如下的容器接口继承关系图:
java容器主要包括collection
接口(集合)和map
接口(图)
1. Collection接口
1.1. List接口
1.1.1. ArrayList
数组实现,查询快,增删慢,线程不安全,效率高;
1.1.2. LinkedList
链表实现,查询慢,增删快,线程不安全,效率高;
1.1.3. Vector
数组实现,查询快,增删慢,同步访问
1.1.4. Stack
vector子类,先进后出,vector不常用,stack却很常用。
1.2. Set接口
1.2.1. HashSet
基于HashMap实现,线程不安全,效率高;
存储元素无序,不可重复;
1.2.2. LinkedHashSet
基于LinkedHashMap实现,线程不安全,效率高;
存储元素有序,不可重复;
1.2.3. TreeSet
基于TreeMap实现,线程不安全,效率高;
存储元素有序,不可重复;
1.3. Queue接口
1.3.1. PriorityQueue
通过二叉小顶堆实现,可以用一棵完全二叉树表示。
1.3.2. LinkedList
链表实现,查询慢,增删快,线程不安全,效率高;
2. Map接口
2.1. HashMap
数组+链表+红黑树实现,线程不安全,效率高;
重点是扩容和红黑树转换
2.2. TreeMap
和HashMap无序排序不同,SortedMap接口在内部会对Key进行排序,注意到SortedMap是接口,它的实现类是TreeMap。
2.3. LinkedHashMap
底层数据结构类似hashmap,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序、访问顺序。
3.常见用法------增/删/改/查/排序/容量
以上是简单的容器特性介绍,下面是一些常用的容器类的使用方法,废话不多说,上图:
后记
如果觉得我写得还算不错,不妨点赞关注一波走起~