Java Core II 读书笔记(二)集合框架

集合框架

概述:如果熟悉C++ STL 的朋友肯定会发现 Java 的集合类库设计思路与STL的思路有很多相同之处,如泛型算法、迭代器等。Java为所有集合类设计了一些通用的接口,去操作所有实现集合类。

Java集合类库公共接口:

1.       Iterator<E> iterator()

2.       int size()

3.       boolean isEmpty()

4.       boolean contains(Object obj)

5.       boolean containsAll(Collection<?> other)

6.       boolean add(Object element)

7.       boolean addAll(Collection<? extends E> other)

8.       boolean remove(Object obj)

9.       boolean removeAll(Collection<?> other)

10.   void clear()

11.   boolean retainAll(Collection<?> other)

12.   Object[] toArray()

    纵观一下集合框架和一般数据结构一样,都提供了对这个数据结构的增、删、改、查、迭代操作。

 Java集合类库实现:

(1)    ArrayList

(2)    LinkedListjava的链表是双向链表)

(3)    HashSet

(4)    TReeSet

(5)    EnumSet

(6)    LinkedHashSet

(7)    PriorityQueue

(8)    HashMap

(9)    treeMap

(10)EnumMap

(11)LinkedHashMap(链状散列表:链表与散列表的复合结构,主要为了散列表排序)

(12)WeakHashMap(弱散列表)

(13)IdentityHashMap(标识散列表-它的键值是对象内存地址)

 纵观一下Java集合框架的实现,和所有优秀的集合类库一样,都提供了对基本数据结构,数组、链表、队列、散列集、散列表、树列集、树列表的支持

 Java集合框架:

  

Java Core II 读书笔记(二)集合框架_第1张图片
 



Java Core II 读书笔记(二)集合框架_第2张图片
Classes in the collections framework

Java旧集合类库

Java Core II 读书笔记(二)集合框架_第3张图片
Java 放弃以前旧的集合类,主要是由于这些集合类都是线程同步的,后来java 集合类库的设计者认为真正的实际应用不大,所有就重新设计了Java 集合类库,而为线程同步设计了专门的集合类,如同步队列等。设计者为了程序编写者的方便为不安全的Java 集合类库,设计了一个包装器,程序编写者也可以通过包装器去对不安全的集合对象实现线程安全的操作。

 Java的包装器和视图

     java为了让一些集合类,拥有另外一种特性,为这些集合设计了包装器和视图,如为了以线程安全的方式去访问不安全的集合对象;为了以数组下标的方式去方法链表元素等。表面上看上去另外某些数据结构了特性,其实内部操作却是以另外一种方式去处理的。也许java是想提供一种接口的操作方式。

 集合类库算法

    java这种思想源于C++,类库框架先定义一种接口去描述某些操作,具体算法采取可装配的方式去处理。如类库的查找与排序等算法,当前java已经为你提供了很多优秀的算法,你也可以装配自己的算法去实现排序,查找。

你可能感兴趣的:(java)