- 常用集合属性详解
- 集合底层实现原理
- 常用集合适用场景分析
集合是一个存放对象的引用的容器,在Java中它存在于java.util包下,List、Set、Vector、Map等都继承与Collection接口。
HashMap
常用方法
containsValue()
containsKey()
详解
HashMap初始大小为16,扩容因子默认大小为1.75,支持以线程异步,但是安全系数不高,使用hashCode()属性进行快速查询,哈希算法支持的集合,HashMap最多只允许一条记录的键为null,允许多条记录的值为null
HashTable
常用方法
clear()
elements()
contains()
详解
HashTable是线程同步的且线程安全,底层采用数组+连表的结构,但是key值不能存储null,初始大小为11,扩容为原来的两倍,最大扩容量是2^32-8,在处理冲突时HashTable采用的是链表,HashCode取值会取默认的hashCode
TreeMap
*常用方法
clone()
comparator()
ceilingEntry()
详解
TreeMap的底层由红黑树组成,在新增和删除操作中效率较低,但是TreeMap支持一系列的导航方法,可以对键对象进行排序,且支持序列化,是唯一一个map带有subMap()方法的集合,
ArrayList
*常用方法
add()
size()
get()
...
详解
ArrayList是一个由数组实现的List,初始容量为10,因为底层是数组所以查询速度很快,而且支持自动扩容,但是插入和删除的效率较低,相较于LinkedList,ArrayList的开销较小,在插入时,从尾部插入数据的效率要高于中间和头部
LinkedList
*常用方法
add()
addFirst()
removeFirst()
...
详解
LinkedList是基于双向链表实现的集合,在查询方面因为存储不连续,只能通过遍历查询所以效率较为低,但是执行插入和删除速度较快,可以当做堆栈,队列或者双向队列来使用,不存在初始大小和扩容比例,每次新增元素时new Node(),LinkedList允许存储null值
Vector
*常用方法
add()
addFirst()
removeFirst()
...
详解
Vector类似于数组支持下标访问方式等;支持随机访问,使用【】或 at(),因为增加了同步检查所以执行插入和删除效率较低,而且数据一旦超过默认分配的大小就需要对当前资源进行整体的重新分配、拷贝和释放,vector的增长是在空间满了之后直接扩容一倍
HashSet
*常用方法
hashCode()
qeual()
put()
...
详解
HashSet是一个为快速查找设计的Set,它是基于HashMap实现的集合,因此HashSet不会保证元素的顺序,HashSet通过hashCode和equals来保证元素的唯一性,但是元素的值可以为null
TreeSet
*常用方法
add()
remove()
isEmpty()
...
详解
TreeSet是基于二叉树实现的,它可以保证元素的唯一性与实现元素的排序,通过自然排序器和Comparator实现排序,默认是按升序自然顺序排序,TreeSet需要实现Comparable接口
如有错误欢迎补充
作者:科目三考五次
2022 年 09月 01日