Java基础之集合

集合的特性

在这里插入图片描述

集合的应用场景

在这里插入图片描述

基础知识

list的基础知识

Vector初始容量是10,扩容增量:原来的1倍

Vector线程安全,但是速度慢

ArrayList初始容量是10,扩容增量:原来容量*0.5+1

ArrayList线程不安全,查询速度快

set的基础知识

Set集合不存储重复的数据,对象调用hashCode和equals方法,因为输入重复的数据,hashCode得到的哈希值相等,不能存入。

HashSet初始容量是16,加载因子为0.75,即当元素个数超过容量长度的0.75倍 时,进行扩容,扩容增量是原容量的1倍。

HashSet线程不安全,存取速度快

尽管Set没有下标,是无序的,但还是可以通过for循环遍历

前面说Set集合是无序的,但是TreeSet集合可以是有序的,存入TreeSet集合的对象需要实现Comparable接口;String类实现了Comparable接口。CompareTo方法相等返回0,升序返回1,降序返回-1

map的基础知识

Map是双列集合接口,以键值对的存储方式,一个键值对就是一个Map.Entry<K,V>对象,最常用的双列集合是HashMap

HashMap默认初始容量是16,长度始终保持2的n次方,加载因子为0.75,扩容增量:原容量的1倍

HashMap在某种条件下:速度比HashSet快
他们俩都必须计算哈希码,但要考虑HashMap的键的性质-它通常是一个简单的String甚至是一个数字。而 String和Integer的计算哈希码的速度 比 整个对象的默认哈希码 计算要快得多,如果HashMap的键与存储在HashSet中的键是相同的对象,则性能将没有真正的区别。区别在于HashMap的键是哪种对象。

HashMap线程不安全

HashTable默认初始容量是11,加载因子为0.75,扩容增量:2*原数组长度+1

HashTable线程安全,但是速度慢,不允许key/value为null

TreeMap底层基于红黑树算法,因为Map中的key是Set,所以不能保证添加的先后顺序,也不允许重复,但是Map中存储的key会默认使用自然排序(从小到大),和TreeSet一样,除了可以使用自然排序也可以自定义排序。

LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值