Java集合框架

本文应付面试足够


1.List、Set都继承Collection接口

2.List元素放入有序、可重复,查询效率高(因为地址连续);

Set元素放入无序(位置由HashCode决定,实际固定)、重复会覆盖,加入Set的对象必须定义equals方法以确保对象的唯一性,只可以用迭代器来遍历,增删效率高

3.线程安全

LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;
HashMap是非线程安全的,HashTable是线程安全的;

StringBuilder是非线程安全的,StringBuffer是线程安全的。

4.ArrayList和LinkedList,前者查询方便,后者增删方便,所以不能盲目用ArrayList

5.ArrayList和Vector,都是用数组实现,后者线程安全,可以设置增长因子,在空间不足时,增加空间方式和ArrayList不同,所以大数据量用Vector有优势

6.HashSet和TreeSet,前者HashCode实现,最多只能放一个null,放入其中的对象必须实现HashCode方法,适合快速查找;后者红黑树实现,其中的元素是自动排好序的 ,不可放入null,适合用于排序。

7.HashMap、TreeMap和LinkedHashMap。HashMap基于HashCode,链表解决冲突,8节以后自动化转化为红黑树。TreeMap采用红黑树,适用于按键遍历。LinkedHashMap比HashMap多维护一个双向链表用以维护加入顺序。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值