集合及常见问题(写给自己看的,加深记忆)

集合:就是用来存对象的,并不是对象本身,而是对象的引用。
最上面有两个接口:collection和map。
常见的接口是list、set、map。
下面借用了菜鸟教程的这张图,可以清楚地看见集合框架里面有什么。
结合在这里插入图片描述
关于集合的常见问题:
1、list和set,map的区别:
a、list和set都继承了Collection接口。
b、list是线性结构的,有序,可重复的,是通过索引来查找的。
c、set是零散的,无序的,不可重复的(用equls方法来判断是否重复)。
d、map是通过键值对实现的。
2、list的实现类:arraylist、linkedlist、vector
三者的区别:
arraylist和vector都是数组实现的,因此数组长度大于实际长度,linkedlist是双向链表实现的。
arraylist通过索引查找速度快,linkedlist增加和删除速度快。
vector有synchronized修饰,所以是线程安全的,因此性能比arraylist差。现在已经是java的遗留容器。
解决arraylist和linkedlist线程不安全问题:
使用工具类 Collections中的synchronizedList方法将其转换成线程安全的容器 。
3、arraylist和vector的增量:
arraylist:增加0.5倍,例如你设置的长度为10,那他的数组长度其实是15.
vector:增加1倍,例如,设置长度为10,数组长度其实是20;
4、set的实现类及区别:
treeset:实现了sortedset接口,是有序的 。 hashset:是无序的,可以存一个null值,它的底层其实是hashmap。
5、treeset和treemap在排序时如何比较元素 :
treeset要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。treemap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。
6、map的常见实现类:hashmap,treemap,hashtable
hashmap 是一个散列表(是由数组和链表组成),它存储的内容是键值对(key-value)映射。根据键的hashcode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步,线程不安全。
treemap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用treemap(tashmap中元素的排列顺序是不固定的)。
hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。 hashtable不允许空(null)键(key)或值(value), 线程安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值