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中的实现

ElasticSearch进阶:一文全览各种ES查询在Java中的实现

Java中Web容器

java怎样设置图片适应容器大小

Java并发工具类Java并发容器

java容器学习