List List:有序(存入和取出的順序一致),元素都有索引值,元素可以重覆。 * Set:元素不能重覆,無序。 * **** List:特有的常見方法:有一個共性的特點就是可以操作角標。 *1.添加 * void add(); * * 2.刪除 * Object remove(index) * ...
List
List:有序(存入和取出的順序一致),元素都有索引值,元素可以重覆。
* Set:元素不能重覆,無序。
*
**** List:特有的常見方法:有一個共性的特點就是可以操作角標。
*1.添加
* void add();
*
* 2.刪除
* Object remove(index)
*
* 3.修改
* Object set (index,element)
*
* 4.獲取
* Object get(index)
* int indexOf(object)
* List subList(from,to)
* List:
* 1.Vector 內部是數組數據結構,是同步的。增刪,查詢都很慢。
* 2.ArrayList:內部是數組數據結構,是不同步的。替代了Vector。查詢的速度快。
* 3.LinkedList:內部是鏈表數據結構,是不同步的。增刪元素的速度是很快的。
除了實現 List 介面外,LinkedList 類還為在列表的開頭及結尾 get、remove 和 insert 元素提供了統一的命名方法。
這些操作允許將鏈接列表用作堆棧、隊列或雙端隊列。
Set
Set:元素不可以重覆,是無序,並且最多包含一個 null 元素
|--TreeSet:可以對Set集合中的元素進行排序,是不同步的
判斷元素唯一性的方法:就是根據比較方法返回是否是0。
TreeSet對元素進行排序的方式之一:
讓元素自身具備比較功能,元 素就需要實現Comparable介面。覆蓋compareTo方法。
如果不要按照對象中具備的自然順序進行排序。如果對象中不具備自然順序,可以使用
TreeSet集合的第二種排序方式之二:
TreeSet不能直接對元素進行比較,它是根據元素的比較結果排序,如果元素不具備比較功能,讓集合自身具備比較功能。
定義一個類實現Comparator介面,覆蓋compare方法。
將該類對象作為參數傳遞給TreeSet集合的構造函數。
集合的一些技巧:
需要唯一嗎?
需要:Set
需要制定順序:
需要:TreeSet
不需要:HashSet
但是想要一個和存儲一致的順序:LinkedHashSet
不需要:List
List有著和存儲一致的順序
需要頻繁增刪嗎?
需要:LinkedList
不需要:ArrayList
Map
Map:一次添加一對元素。Collection一次添加一個元素
Map也稱為雙列集合,Collection集合稱為單列集合
其實map集合中存儲的就是鍵值對。
map集合中必須保證鍵的唯一性。
常用方法:
1.添加
value put (key,value):返回前一個和key關聯的值,如果沒有返回null
2.刪除
void clear():清空map集合
value remove():根據指定的key翻出這個鍵值對
3.判斷
boolean containsKey(key)
Boolean contiansValue(value)
Boolean isEmpty()
4.獲取
value get(key):通過鍵獲取值,如果沒有該鍵返回null
當然可以通過返回null,來判斷是否包含指定鍵,
5.獲取大小
int size():獲取鍵值對的個數。
Map常用的子類:
|---Hashtable:內部結構是哈希表,是同步的。不允許null作為鍵,null作為值。
|--Properties:用來存儲鍵值對的配置文件的信息,可以和io技術相結合。
|---HashMap:內部結構是哈希表,不是同步的。允許null作為鍵,null作為值。
|---LinkdedHashMap:內部結構是哈希表和鏈表,迭代順序和存儲數據一致,不是同步的。
|---TreeMap:內部結構是紅黑樹,不同步,可以對Map集合中的鍵進行排序。
編程技巧:當TreeMap被填充後,就可以調用keySet(),取得key組成的Set,然後使用toArray()方法生成key的數組(集合collection中的類都有toArray()方法),接下來使用Array的binarySearch()方法在已排序的數組中快速查找對象。
如何記錄每個容器的結構和所屬體系?
看名字:
List
ArrayList
LinkedList
Set
HashSet
TreeSet
尾碼名即是該集合的體系。
首碼名即是該集合的數據結構。
看到array就要想到數組,就要想到查詢快,有角標。
看到link就要想到鏈表,就要想到增刪快,就要 add remove
看到hash就要想到哈希表,就要想到唯一性,就要想到元素覆蓋hashcode和equals方法
看到tree就要想到二叉樹,就要想到排序,就要想到兩個介面Comparator,Comparable
而且通常這些常用的集合容器都是不同步的。