JDK源码阅读——集合类(1)

  今天算是正式开始读源码了。看了许多面经,发现不读源码还是不行。今天稍微看了看一些接口和抽象类等,大致有了点理解。总结点它们之间的区别吧

 

Collection和Collections

  Collection是个接口,规范了一些相关的类必备的方法。其中,List、Set、Queue、Deque都继承自Collection。而Collections则是Arrays的包装,更多的还是丰富了对数组的操作。这里提一句Arrays,虽然Arrays是public的,但它的构造函数其实是private,所以也是无法实例化的,其作用还是在于它提供的诸多静态方法。从前版本中,Arrays.sort是通过归并排序实现的,而目前是通过一种快排算法实现的。当数据量超过一定量时,将采用并行算法进行排序。

 

List和Vector

  List是接口,而Vector是可实例化的类。Vector的作用和C++中的vector类似,都是可扩展的数组。List实现的形式有两种,一是ArrayList类,二是LinkedList类。由名字可知,前者底层是数组,后者是链表。这两类均实现了可扩展数组的区别在于:Vector速度较慢,但其线程安全,不允许多个线程同时访问。List则是速度较快,但并不是线程安全的,因此允许多个线程同时访问。

 

Dictionary和Map

  这二者发挥的作用是一致的,都是提供了键值对的字典功能。但Dictionary是抽象类,而Map是接口。目前Dictionary已经被淘汰了,取而代之的是实现、扩展更为方便的Map。

 

  明天具体阅读一下,Hashmap、Hashset、LinkedList、ArrayList等。

posted @ 2020-10-02 19:36  dlooooo  阅读(142)  评论(0编辑  收藏  举报