Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> ArrayList LinkedList Set HashMap介紹

ArrayList LinkedList Set HashMap介紹

編輯:高級開發

android開發中我們經常需要對數據進行分類和操作,對於輕量級的數據存儲我們可能不需要動用SQLite或效率以及類庫不完善的XML,由於SharedPreferences不具備數據枚舉方法,如果僅僅是一個String或Int數組可以通過一個標記分割設計外,我們還是主要來看看android或者說Java提供的基礎數據類型輔助類ArrayList LinkedList Set HashMap的介紹,如果你熟悉C++的STL或Boost庫可以略過本文。

在Java中提供了Collection和Map接口。其中List和Set繼承了Collection接口;同時用Vector、ArrayList、LinkedList三個類實現List接口,HashSet、TreeSet實現Set接口。直接有HashTable、HashMap、TreeMap實現Map接口。

Vector基於Array的List,性能也就不可能超越Array,並且Vector是“sychronized”的,這個也是Vector和ArrayList的唯一的區別。

ArrayList:同Vector一樣是一個基於Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優越一些。android123提示大家適用於順序性的查找

LinkedList:不同於前面兩種List,它不是基於Array的,作為鏈表數據結構方式,所以不受Array性能的限制。當對LinkedList做添加,刪除動作的時候只要更改nextNode的相關信息就可以實現了所以它適合於進行頻繁進行插入和刪除操作。這就是LinkedList的優勢,當然對於元素的位置獲取等方面就遜色很多。

List:

1. 所有的List中只能容納單個不同類型的對象組成的表,而不是Key-Value鍵值對。例如:[ tom,1,c ];

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

3. 所有的List中可以有null元素,例如[ tom,null,1 ];

4. 基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作。

雖然Set同List都實現了Collection接口,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別。

HashSet:HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項,HashMap的key是不能有重復的。HashSet能快速定位一個元素,但是放到HashSet中的對象需要實現hashCode()方法0。

TreeSet:將放入其中的元素按序存放,這就要求你放入其中的對象是可排序的。TreeSet不同於HashSet的根本是TreeSet是有序的。它是通過SortedMap來實現的。

Set總結: 1. Set實現的基礎是Map(HashMap); 2. Set中的元素是不能重復的,如果使用add(Object obj)方法添加已經存在的對象,則會覆蓋前面的對象,不能包含兩個元素e1、e2(e1.equals(e2))。

Map是一種把鍵對象和值對象進行關聯的容器,Map有兩種比較常用的實現: HashTable、HashMap和TreeMap。

HashMap也用到了哈希碼的算法,以便快速查找一個鍵,

TreeMap則是對鍵按序存放,因此它有一些擴展的方法,比如firstKey(),lastKey()等。

HashMap和Hashtable的區別。 HashMap允許空(null)鍵(key)或值(value),由於非線程安全,效率上可能高於Hashtable。 Hashtable不允許空(null)鍵(key)或值(value)。

有關更多實用的android開發技巧我們將在後面的文章中著重介紹。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved