1. 程式人生 > >JAVA常用知識(mian shi)點總結---集合

JAVA常用知識(mian shi)點總結---集合

lec 集合接口 cto trees 包裝類 哈希表 htable 統一 數組

一、Collection 與 Collections的區別:
1. Collections:
java.util.Collections 是一個包裝類。它包含有各種有關集合操作的靜態多態方法。此類不能實例化,就像一個工具類,服務於Java的Collection框架。


2. Collection:
Collection是最基本集合接口,它定義了一組允許重復的對象,提供了對集合對象進行基本操作的通用接口方法,其意義是為各種具體的集合提供了最大化的統一操作方式。


二、Collection 基礎:
1. Collection接口派生了兩個子接口Set和List,分別定義了兩種不同的存儲方式,如下:

(1)List 是實現了List接口的集合類,有序且可以重復,兩個重要的實現類 ArrayList和LinkedList,特性如下:
ArrayList: 底層是維護了一個Object數組實現的。 特點: 查詢速度快,增刪慢。
LinkedList:底層是使用了雙向鏈表數據結構實現的, 特點: 查詢速度慢,增刪快。
  Vector(不常用): 底層也是維護了一個Object的數組實現的,實現與ArrayList是一樣的,但是Vector是線程安全的,操作效率低。

(2)Set 是實現了Set接口的集合類,無序且不可重復。兩個重要的實現類HashSet和TreeSet
  HashSet: 底層是使用了哈希表來支持的,特點: 存取速度快.
  TreeSet: 如果元素具備自然順序 的特性,那麽就按照元素自然順序的特性進行排序存儲。


2. Collection接口中的方法:

(1) 增加
  add(E e) 添加成功返回true,添加 失敗返回false.
  addAll(Collection c) 把一個集合 的元素添加到另外一個集合中去。

(2) 刪除
  clear()
  remove(Object o)
  removeAll(Collection c)
  retainAll(Collection c)

(3) 查看
  size()

(4) 判斷
  isEmpty()
  contains(Object o)
  containsAll(Collection<?> c)

(5) 叠代
  toArray()
  iterator()

3. Map&Iterator接口及Comparable接口
1) Map接口:
該接口描述了從不重復的鍵到值的映射。Map接口用於維護鍵/值對(key/value pairs)。
特征:它描述了從不重復的鍵到值的映射。兩個重要的實現類:HashMap和TreeMap
HashMap:基於哈希表實現,特點就是鍵值對的映射關系。一個key對應一個Value。HashMap中元素的排列順序是不固定的。更加適合於對元素進行插入、刪除和定位。
TreeMap:基於紅黑樹實現。TreeMap中的元素保持著某種固定的順序。更加適合於對元素的順序遍歷。

2) Iterator接口:
  集合訪問器,用於循環訪問集合中的對象。所有實現了Collection接口的容器類都有iterator方法,用於返回一個實現了Iterator接口的對象。
Iterator對象稱作叠代器,Iterator接口方法能以叠代方式逐個訪問集合中各個元素,並可以從Collection中除去適當的元素。

3) Comparable接口:
可以用於比較的實現,實現了Comparable接口的類可以通過實現comparaTo方法從而確定該類對象的排序方式。

三、HashMap和Hashtable的區別
1. HashTable:
  線程安全的,多個線程可以共享一個Hashtable;而如果沒有正確的同步的話,多個線程是不能共享HashMap的。
Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好,單線程環境下它比HashMap要慢。

2. HashMap:
  非synchronized,並可以接受null(HashMap可以接受為null的鍵值(key)和值(value),而Hashtable則不行。
  HashMap不能保證隨著時間的推移Map中的元素次序是不變的。
  另外,HashMap的叠代器(Iterator)是fail-fast叠代器,而Hashtable的enumerator叠代器不是fail-fast的。

未完待續。。。。。。

JAVA常用知識(mian shi)點總結---集合