万丈高楼平地起之Java基础五

145 阅读2分钟

因为朋友结婚,连续几天都没有更新文章,有点打脸前言所写。再次执笔写一些新的知识点《Java核心技术》上下两册也已经看完,相比较于上册,下册有些更难理解,预备再次复习,结合其他相关Java书籍。这一篇将介绍集合相关知识点,并同时还会为ArrayList、 LinkList 、HashMap 写源码解读。

1、Collection架构知识图谱


2、List Set Map 三者的区别

List 存取有序,单列元素,可以存储重复的值;

Set 存取无序,单列元素,不可以存储重复值;

Map 存取无序,存储的是键值对,是双列元素,键不可重复。

3、ArrayList 、LinkedList和Vector

ArrayList:数组结构,有索引,查询速度快,增删慢,线程不安全,效率高;

LinkedList:链表结构,没有索引,有前后指针,查询需要遍历全部,速度慢;增删慢,线程不 安全,效率高;

Vector:数组结构,有索引,查询速度快,增删慢,线程安全,效率低;

4、HashMap、Hashtable和HashSet的区别

HashMap:链表+数组+红黑树(1.8)线程不安全,效率高,键值对允许为null,

HashSet:基于HashMap实现,只少量 重写了方法,实现排序

Hashtable:线程安全,效率低,不允许null

5、Iterator与ListIterator有什么区别

Iterator:用来遍历Set和List集合,只能正向遍历集合,适用于获取移除元素。

ListIerator:只能用来遍历List,继承Iterator,可以双向列表的遍历,同样支持元素的修改。

6、HashMap的长度为什么是2的幂次方

可参考:

blog.csdn.net/zjcjava/art…

7、Comparable Comparator的区别

comparable接口实际上是有一个 compareTo(Object obj)方法用来排序 ;comparator接口实际上是有一个compare(Object obj1, Object obj2)方法用来排序。关键就是在于他们两方法不一样,处理的方式也不一样,分别用于自然排序与定制排序,有需要可以重写这两个方法。

8、内存空间的使用情况

一般而言,在创建list /map 时都不会主动去设置参数,这样一来就会导致很多空间被浪费,有时候明明list只装载3个数值,未指定大小则初始化后生成了一个10长度的数组,这样就有很多空间被浪费。原则上:知道大小,就指定大小,不去触动扩容机制。

9、Collections和Collection区别

Collection:提供了对集合对象进行基本操作的通用接口方法,Collection接口在Java 类库中有很多具体的实现提高扩展性。

Collections:是一个包装类,包含各种有关集合操作的静态多态方法,实则上是一个工具类。