位于java.util包中
collection接口(不唯一、無(wú)序)
子接口
1.List接口 (存儲(chǔ)一組不唯一、有序的對(duì)象)
實(shí)現(xiàn)類(lèi)ArrayList(非同步的unsynchronized不是線程安全)實(shí)現(xiàn)類(lèi)LinkedList(非同步的unsynchronized不是線程安全)實(shí)現(xiàn)類(lèi)Vector(線程安全的,同步的synchronized):(子類(lèi))Stack
ArrayList 采用數(shù)組方式存儲(chǔ)數(shù)據(jù)、利用索引直接獲取元素,遍歷元素和隨機(jī)訪問(wèn)元素的效率比較高ArrayList進(jìn)行元素替換可使用set(int index,Object o)的方法;也可以通過(guò)移除remove(int index)或者remove(Object o),然后添加add(Obeject o)的方式
indexOf(Object o) 返回元素在集合中出現(xiàn)的索引boolean add(Object o) 在列表的末尾順序添加元素,起始索引位置從0 開(kāi)始void add(int index,Object o) 在指定的索引位置添加元素。索引位置必須介于0和列表中元素個(gè)數(shù)之間int size() 返回列表中的元素個(gè)數(shù)Object get(int index) 返回指定索引位置處的元素。取出的元素是Object 類(lèi)型,使用前需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換boolean contains(Object o) 判斷列表中是否存在指定元素boolean remove(Object o) 從列表中刪除元素Object remove(int index) 從列表中刪除指定位置元素,起始索引位置從0 開(kāi)始
addAll是傳入一個(gè)List,將此List中的所有元素加入到當(dāng)前List中,也就是當(dāng)前List會(huì)增加的元素個(gè)數(shù)為傳入的List的大小
即addAll(Collection c) add(int index,Elelemt e)
--------------------------------------
addAll(Collection c)
此方法按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。如果正在進(jìn)行此操作時(shí)修改指定的 collection ,那么此操作的行為是不確定的。(這意味著如果指定的 collection 是此列表且此列表是非空的,那么此調(diào)用的行為是不確定的)。
C | 包含要添加到此列表中的元素的 collection |
return | 如果此列表由于調(diào)用而發(fā)生更改,則返回 true |
Throws | NullPointerException: 如果指定的 collection 為 null |
addAll是傳入一個(gè)List,將此List中的所有元素加入到當(dāng)前List中,也就是當(dāng)前List會(huì)增加的元素個(gè)數(shù)為傳入的List的大小
即addAll(Collection c)add(int index,Elelemt e)
--------------------------------------
addAll(Collection c)
此方法按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。如果正在進(jìn)行此操作時(shí)修改指定的 collection ,那么此操作的行為是不確定的。(這意味著如果指定的 collection 是此列表且此列表是非空的,那么此調(diào)用的行為是不確定的)。
C | 包含要添加到此列表中的元素的 collection |
return | 如果此列表由于調(diào)用而發(fā)生更改,則返回 true |
Throws | NullPointerException: 如果指定的 collection 為 null |
List.addAll()方法,就是規(guī)定了,自己的這個(gè)List 就是容器,往里面增加的List 實(shí)例,增加到里面后,都會(huì)被看成對(duì)象。
這時(shí):List.add(list1),List.add(list2);List.add(list3), 這時(shí),List.size 它的大小就是所有l(wèi)ist 實(shí)例化后的總數(shù)和總的記錄數(shù)。
因此,當(dāng)需要把多個(gè)List 實(shí)例放到一起的時(shí)候,必須使用List.addAll()方法。
一般情況下,使用的時(shí)候會(huì)像這樣進(jìn)行聲明:List arrayList = new ArrayList();如果像上面這樣使用默認(rèn)的構(gòu)造方法,初始容量被設(shè)置為10。當(dāng)ArrayList中的元素超過(guò)10個(gè)以后,會(huì)重新分配內(nèi)存空間,使數(shù)組的大小增長(zhǎng)到16。可以通過(guò)調(diào)試看到動(dòng)態(tài)增長(zhǎng)的數(shù)量變化:10->16->25->38->58->88->...
也可以使用下面的方式進(jìn)行聲明:List arrayList = new ArrayList(4);將ArrayList的默認(rèn)容量設(shè)置為4。當(dāng)ArrayList中的元素超過(guò)4個(gè)以后,會(huì)重新分配內(nèi)存空間,使數(shù)組的大小增長(zhǎng)到7??梢酝ㄟ^(guò)調(diào)試看到動(dòng)態(tài)增長(zhǎng)的數(shù)量變化:4->7->11->17->26->...
那么容量變化的規(guī)則是什么呢?請(qǐng)看下面的公式:((舊容量 * 3) / 2) + 1
一旦容量發(fā)生變化,就要帶來(lái)額外的內(nèi)存開(kāi)銷(xiāo),和時(shí)間上的開(kāi)銷(xiāo)。所以,在已經(jīng)知道容量大小的情況下,推薦使用下面方式進(jìn)行聲明:List arrayList = new ArrayList(CAPACITY_SIZE);即指定默認(rèn)容量大小的方式。
LinkedList 采用鏈表存儲(chǔ)方式。插入、刪除元素時(shí)效率比較高void addFirst(Object o) 在列表的首部添加元素void addLast(Object o) 在列表的末尾添加元素Object getFirst() 返回列表中的第一個(gè)元素Object getLast() 返回列表中的最后一個(gè)元素Object removeFirst() 刪除并返回列表中的第一個(gè)元素Object removeLast() 刪除并返回列表中的最后一個(gè)元素
add(int index, E element):在此列表中指定的位置插入指定的元素。
addAll(Collection<? extends E> c):添加指定 collection 中的所有元素到此列表的結(jié)尾,順序是指定 collection 的迭代器返回這些元素的順序。
addAll(int index, Collection<? extends E> c):將指定 collection 中的所有元素從指定位置開(kāi)始插入此列表。
AddFirst(E e): 將指定元素插入此列表的開(kāi)頭。
addLast(E e): 將指定元素添加到此列表的結(jié)尾。
clear(): 從此列表中移除所有元素。
remove():獲取并移除此列表的頭(第一個(gè)元素)。
remove(int index):移除此列表中指定位置處的元素。
remove(Objec o):從此列表中移除首次出現(xiàn)的指定元素(如果存在)。
removeFirst():移除并返回此列表的第一個(gè)元素。
removeFirstOccurrence(Object o):從此列表中移除第一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。
removeLast():移除并返回此列表的最后一個(gè)元素。
removeLastOccurrence(Object o):從此列表中移除最后一次出現(xiàn)的指定元素(從頭部到尾部遍歷列表時(shí))。
對(duì)于查找方法的源碼就沒(méi)有什么好介紹了,無(wú)非就是迭代,比對(duì),然后就是返回當(dāng)前值。
get(int index):返回此列表中指定位置處的元素。
getFirst():返回此列表的第一個(gè)元素。
getLast():返回此列表的最后一個(gè)元素。
indexOf(Object o):返回此列表中首次出現(xiàn)的指定元素的索引,如果此列表中不包含該元素,則返回 -1。
lastIndexOf(Object o):返回此列表中最后出現(xiàn)的指定元素的索引,如果此列表中不包含該元素,則返回 -1
2.Set接口 (存儲(chǔ)一組唯一、無(wú)序的對(duì)象)
set不存在get()方法(無(wú)序的)
采用對(duì)象的equals()方法比較兩個(gè)對(duì)象是否相等實(shí)現(xiàn)類(lèi)HashSet(不同步的,線程不安全的)實(shí)現(xiàn)類(lèi)TreeSet(不同步的,線程不安全的)add(Object o) 若未包含指定元素,則添加指定元素clear() 移除所有元素size() 返回set中的元素的數(shù)量isEmpty() 若set不包含任何元素則返回truecontains(Object o) 包含指定元素,則返回trueremove(Object o) 指定元素存在于set中,則將其移除toArray()
addAll方法用來(lái)向Set集合添加另一個(gè)集合對(duì)象所包含的所有內(nèi)容。
語(yǔ)法 boolean addAll(Collection<? extends E> c)
返回值:如果Set集合發(fā)生更改,則返回true。
參數(shù):c是要添加到Set集合中的另一個(gè)集合對(duì)象。
示例 本示例創(chuàng)建一個(gè)Set集合,為該集合添加一些對(duì)象,然后再創(chuàng)建第二個(gè)Set集合,同樣添加一些對(duì)象,最后調(diào)用addAll方法將第二個(gè)Set集合添加到第一個(gè)Set集合中,并且分別輸出調(diào)用addAll方法前后Set集合的大小。
Map接口(鍵值對(duì)<k,v>)
鍵值對(duì)形式保存數(shù)據(jù) key(唯一、無(wú)序)-value(不唯一、無(wú)序)key要求唯一,無(wú)法修改 只能remove鍵值,不能remove value值
Hashtable:底層是哈希表數(shù)據(jù)結(jié)構(gòu),不可以存入null鍵null值,該集合是線程同步的。jdk1.0效率低
HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),允許使用null值和null鍵,該集合是不同步的。jdk1.2效率高
TreeMap:底層是二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)。線程不同步,可以用于給map集合中的鍵進(jìn)行排序。
isEmpty() 是否存在元素clear() 清除集合中所有元素Object put(Object key, Object val) 以“鍵- 值”對(duì)的方式進(jìn)行存儲(chǔ)若包含則舊值將被替換 檢查key是否存在,若存在則進(jìn)行修改操作;反之進(jìn)行插入操作Object get(Object key) 根據(jù)鍵返回相關(guān)聯(lián)的值,如果不存在指定的鍵,返回nullObject remove(Object key) 刪除由指定的鍵映射的“鍵- 值對(duì)”int size() 返回元素個(gè)數(shù)Set keySet() 返回鍵的集合Collection values() 返回值的集合boolean containsKey(Object key) 如果存在由指定的鍵映射的“鍵-對(duì)”,返回truecontainsvalue(Object value) 判斷集合中是否存在value
Set entrySet() 鍵值對(duì)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注