JAVA集合框架常用类总结

Arraylist

Arraylist初始容量为了零
调用add第一次扩容默认容量为10
new 实例的时候可以指定大小
当我们用无参构造创建一个ArrayList对象的时候,ArrayList底层数组是一个空数组,
当我们用add方法的时候才会去指定Arraylist大小。默认大小为10.
每次调用add方法的时候都会区判断是否需要扩容,当容量不够了就会扩容为原来的1.5倍

int newCapacity = oldCapacity + (oldCapacity >> 1);

如果扩容1.5倍还不够的话,则直接赋值为当前需要的容量。

LinkdeList

底层为双向链表
add方法用的是尾插法 get(index)方法需要遍历整个链表所以不推荐使用
线程不安全,如果想要线程安全的使用的话
LinkedList list = new LinkedList();
List objects = Collections.synchronizedList(list);

Arraylist查询快 不是尾部的增删满,Linkedlist增删快查询满。

HashSet

线程不安全
底层是一个初始容量为16 负载因子为0.75 的HashMap
它使用hashMap的key来存储元素,value存储的是一个PRESENT,静态的Object对象
HashSet是无序的,他不保证存取顺序。

TreeSet

是线程不安全的
内部将存入的元素按照升序排序(自然排序)或者 根据创建TreeSet 时提供的 Comparator 进行排序

HashMap

HashMap集合的特点:
public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable

1.HashMap集合是一个哈希表:查询速度非常快
1).jdk1.8之前:数组+单向链表
2).jdk1.8之后:数组+双向链表+红黑树(链表的长度超过8):提高查询的速度
2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致
3).hashMap集合是一个线程不安全的集合,是多线程的集合,速度快
4).可以存储null值,null键

LinkedHashMap

LinkedHashMap的特点:
public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>

1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
2.linkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

HashTable(一般不用它,已经被hashMap替换掉了)

HashTable的特点:
1).HashTable底层是一个哈希表
2).HashTable是一个线程安全的集合,是单线程
3).不可以存储null值,null键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值