java容器-全览
Posted gc65
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java容器-全览相关的知识,希望对你有一定的参考价值。
1.Collection全览-非线程安全的实现类
接口简介
Iterable:迭代器接口,用于遍历数据。foreach或者iterator。
Collection:集合,java容器大部分集合的父类接口。java集合分两派,一派是Collection(只存储值的容器),一派是Map(存储键值对的容器)
List:顺序写数据的数组容器,内存连续(jvm层面)
Queue:先进先出(FIFO)队列,入队出队操作都有两种实现(一种是失败抛异常,一种是返回null或者false),不能写入null
Deque:double ended queue(双端队列),不在是FIFO,前后都可以插入删除,不能从中间操作,不能写入null
Set:用于存放非重复元素的集合,可以插入null
SortedSet:支持排序的set集合(set使用的是hash存储,默认是不支持排序功能的)
NavigableSet:提供有序集合的扩展功能,如返回大于、大于等于、小于、小于等于某个key的子集合等
类简介
List:
Stack:LIFO(LAST-IN-FIRST-OUT)数组,继承自VECTOR(基本已废弃,图中未体现,这里也不过多介绍)
ArrayList:有序数组,底层使用连续的物理内存存储,数组大小不能动态改变,支持自动扩容,实际是复制一个更大的新数组出来。
LinkedList:使用链表形式组成的有序数组,不支持随机存储,需要重头遍历,物理内存不连续,数组大小无限制。
Queue:
LinkedList:同上,只是通过已有功能扩展实现了队列的功能
ArrayQueue:jdk内部使用
PriorityQueue:优先级队列,根据插入的数据的优先级自动排序,(优先级来源于Comporator,或者插入类实现Comparable接口的compareTo方法)
Deque:
LinkedList:支持双端操作
ArrayQueue:内部使用
Set:
HashSet:使用Hash表存储的集合
LinkedHashSet:有序的hashset(按照插入顺序使用链表的形式连接),不支持排序
TreeSet:支持排序的hashset
SortedSet:
TreeSet:支持排序的hashset
2.Collection全览-线程安全的实现类
3.Map全览-非线程安全的实现
接口简介
Map:无序的hash映射,以键值对的形式存储数据。
SortedMap:表示是一个有序的hash映射表
NavigableMap:提供有序hash映射的扩展功能,如返回大于、大于等于、小于、小于等于某个key的子集合等
类简介
EnumMap:key为枚举类的hash映射表
HashMap:键值对存储的hash映射,允许key或者value为null
LinkedHashMap:在hashmap的基础上增加了一个链表,按照插入顺序链接,保证有序性
WeakHashMap:同hashmap,只是使用的是弱引用,在内存不足的时候会被自动回收,一般可以用来做缓存,不能用来存储不可丢失的数据。
IdentityHashMap:插入删除等操作使用==进行比较的hash映射。注意:==比较得到是地址,其它的hash映射都是使用equals和hashCode进行比较的,基础类型比较的是值,自定义对象,可以自己覆写equals逻辑。
Treemap:支持排序的hashmap
4.Map全览-线程安全的实现
以上是关于java容器-全览的主要内容,如果未能解决你的问题,请参考以下文章
ElasticSearch进阶:一文全览各种ES查询在Java中的实现