集合的父介面--用於定義儲存多種資料型別的集合。
集合中儲存何種資料使用泛型進行限定。
主要定義的方法:
boolean
add(e e)
新增資料到集合中
boolean
addall(collection<? extends e> c)
將指定 collection 中的所有元素都新增到此 collection 中
void
clear()
移除此 collection 中的所有元素
boolean
contains(object o)
如果此 collection 包含指定的元素,則返回 true。
boolean
containsall(collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,則返回 true。
boolean
equals(object o)
比較此 collection 與指定物件是否相等。
inthashcode()
返回此 collection 的雜湊碼值。
boolean
isempty()
如果此 collection 不包含元素,則返回 true。
iterator
iterator()
返回在此 collection 的元素上進行迭代的迭代器。
boolean
remove(object o)
從此 collection 中移除指定元素的單個例項,如果存在的話
boolean
removeall(collection<?> c)
移除此 collection 中那些也包含在指定 collection 中的所有元素。
boolean
retainall(collection<?> c)
僅保留此 collection 中那些也包含在指定 collection 的元素
intsize()
返回此 collection 中的元素數。
object
toarray()
返回包含此 collection 中所有元素的陣列。
ttoarray(t a)
返回包含此 collection 中所有元素的陣列;返回陣列的執行時型別與指定陣列的執行時型別相同。
list介面繼承了collection,是有序的集合 (保證元素的存入順序)--存在對應的下標,因此能夠通過下標來操作列表中的元素
除了繼承collection的方法外,還額外增加了:
方法摘要
void
add(int index, e element)
在列表的指定位置插入指定元素(可選操作)。
boolean
addall(int index, collection<? extends e> c)
將指定 collection 中的所有元素都插入到列表中的指定位置(可選操作)。
boolean
contains(object o)
如果列表包含指定的元素,則返回 true。
boolean
containsall(collection<?> c)
如果列表包含指定 collection 的所有元素,則返回 true。
boolean
equals(object o)
比較指定的物件與列表是否相等。
eget(int index)
返回列表中指定位置的元素。
intindexof(object o)
返回此列表中第一次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。
iterator
iterator()
返回按適當順序在列表的元素上進行迭代的迭代器。
intlastindexof(object o)
返回此列表中最後出現的指定元素的索引;如果列表不包含此元素,則返回 -1。
listiterator
listiterator()
返回此列表元素的列表迭代器(按適當順序)。
listiterator
listiterator(int index)
返回列表中元素的列表迭代器(按適當順序),從列表的指定位置開始。
eremove(int index)
移除列表中指定位置的元素(可選操作)。
boolean
remove(object o)
從此列表中移除第一次出現的指定元素(如果存在)(可選操作)。
boolean
retainall(collection<?> c)
僅在列表中保留指定 collection 中所包含的元素(可選操作)。
eset(int index, e element)
用指定元素替換列表中指定位置的元素(可選操作)。
list
sublist(int fromindex, int toindex)
返回列表中指定的 fromindex(包括 )和 toindex(不包括)之間的部分檢視。
object
toarray()
返回按適當順序包含列表中的所有元素的陣列(從第乙個元素到最後乙個元素)。
ttoarray(t a)
返回按適當順序(從第乙個元素到最後乙個元素)包含列表中所有元素的陣列;返回陣列的執行時型別是指定陣列的執行時型別。
基於陣列的實現,實現了所有可選的列表操作,並允許包括null在內的所有元素。預設的儲存容量是10,在記憶體中空間是連續的
/**
* default initial capacity.
*/private static final int default_capacity = 10;
arraylist的擴容:
每次擴容是在原來基礎上增加一半,右移進行增加。
主要原始碼:
private void grow(int mincapacity)
基於node節點進行儲存,將節點連成鍊錶,底層是基於指標進行連線,所以空間不連續。查詢複雜,增刪只需要排程指標,所以簡單。(是乙個雙向鍊錶)
node原始碼:
private static class node
}
nodenode(int index) else
}
採用了撇半尋找策略:減少了一半的尋找。
考慮:如果在增刪和查詢的次數相差不多的情況下,使用arraylist還是linkedlist? ---linkedlist(可以利用零散記憶體)
基於陣列,記憶體空間連續,預設容量為10,預設每次增加當前容量的一倍。區別於上面2個list集合是執行緒安全的集合,執行緒不安全方法都使用了synchronized關鍵字加鎖。
擴容原始碼:capacitylncrement初始化可以指定。
private void grow(int mincapacity)
完整初始化構造方法:
//初始化容量和擴容增量
public vector(int initialcapacity, int capacityincrement)
主要方法:push(壓棧),pop(出棧),peek(檢視棧頂元素) 集合 Collection集合總結
list有序,可重複 abstractlist 父類abstractcollection抽象類,實現了list介面 arraylist 父類abstractlist 底層資料結構是陣列,查詢快,增刪慢。執行緒不安全,不同步,效率高 vector 父類abstractlist 底層資料結構是陣列,查詢...
Collection集合,List集合
一 collection集合 a collection 集合 單身漢集合 list 特點 有序,可重複,有索引 arraylist 重點掌握 linkedlist 儲存的元素不可重複,訪問順序一致 set 無序,元素不可重複,元素無索引 hashset 重點掌握 linkedhashset tree...
Collection集合 (set集合)
不包含重複元素的集合 即使新增重複元素之後,最終也只能顯示乙個 沒有帶索引的方法,所以不能使用普通的for迴圈遍歷 hashset 對集合的迭代順序不作任何保證 object類中有乙個方法可以獲取物件的雜湊值 public int hashcode 返回物件的雜湊碼值 物件的雜湊值特點 同乙個物件多...