集合框架學習總結

2021-07-02 17:45:19 字數 3863 閱讀 6422

集合實際用來儲存物件(object),但需要注意的是,集合存放的實質上是物件的位址。接下來我們先來看一下集合框架圖,如下(同一顏色方框,我將它們視為同一級):

首先由上圖確認一下它們的關係:

collection (介面)

——set (介面)----------------------儲存元素特點:元素無序,元素不可以重複,與list集合體系本質區別就是無索引。

——hashset

——treeset

——list (介面)----------------------儲存元素特點:元素有序,元素可以重複,因為該集合體系含有索引。

——arraylist

——linkedlist

——vector

map(介面)

——hashmap

——treemap

——hashtable

補充說明: 1) collection、set、list、map都為介面,不能被例項化,需要通過繼承它們的子類(arraylist、hashmap、hashset...)才能被例項化。

接下來進行具體介紹。

1. collection 方法摘要:

補充說明:1).凡是繼承了collection介面的子類都有乙個iterator()方法,通過該方法可以取出集合中所有的值,該方法等後面介紹子類時再加以講解。

2).a1.removeall(a2)  //集合a1會刪除集合a2中相同的元素。

3)a1.retainall(a2)  //   該方法相當於取交集,集合a1只會保留集合a2中相同的元素。 

4)collection其他的方法可以自行去學習,因為開發中比較常見,就不做更多講解了。

—— 1. 1 list 需要注意的方法摘要:

補充說明:1).列表迭代器(listiterator),是list集合體系中特有的迭代器,它是iterator的子介面,它有自己的特有方法:hasprevious()——逆向遍歷列表,列表中有多少個元素,與迭代器(iterator)中hasnext()方法恰好反、previous()——獲取列表中前乙個元素,與next()方法恰好相反。

2).列表迭代器(listiterator)另乙個特點就是持有可以在集合遍歷過程中進行增(add(e e))、刪(remove())、改(set(e e))、查(previous())的方法。

3)sublist(start,end) 方法可以返回指定部分中集合含有的元素。

———— 1. 1.1 array list集合特點 介紹 :

1)底層是陣列結構,所以查詢速度快,相反增刪速度慢    。

2)因為該集合底層為陣列結構,所以當儲存的元素個數大於自定義陣列的長度時,該集合會自動以原有陣列長度50%延長,並將原陣列中的元素複製到該陣列中。

———— 1. 1.2linkedlist集合特點 介紹 :

1)底層是鍊錶結構,所以查詢速度比較慢,相反增刪速度慢比較快    。

2)linkedlist集合特有方法,可以將指定元素新增到列表開頭和結尾處(addfirst(e e)與addlast(e e)),可以獲取列表的第一元素和列表的最後乙個元素。getfirst()與getlast(),removefirst()與removelast(),二者區別在於後者獲取元素的同時刪除元素,前者只獲取元素不刪除。

———— 1. 1.3 vector集合特點 介紹 :

1)底層是陣列結構,jdk1.2版後被arraylist集合取代。

2)與arraylist集合不同之處在於,安全性方面執行緒同步,所以效率低,陣列自動擴充套件以有陣列長度100%延長   。

3)vector具有的特有方法:elements()方法,返回enumeration(列舉),其是一介面,包含hasmoreelements()——測試該列舉是否包含更多元素,返回為布林型。 如果有更多元素,繼續呼叫nextelement()方法——取出列舉中的元素。相當於iterator迭代器的用法。

—— 1. 2  set 集合:

———— 1. 2.1  hashset集合特點 介紹 :

1)底層資料結構是雜湊表,所以導致該集合儲存元素的時候是無序的,如果想按自身排序可以重寫父類中hashcode()和equals(object o)方法 。

2)執行緒是非同步的,所以效率方便比較高效。

———— 1. 2.1  treeset集合特點 介紹 :

1)底層資料結構是二叉樹結構,可以對set中元素進行排序,也可以根據指定比較器進行排序,只要在該集合建構函式中傳乙個比較器的引數。   

所以我們只需要寫乙個類實現comparator介面並實現介面中的compare(object o1 ,object o2)方法,如下圖:

有必要時,需要用到hashcode值進行比較。

2.map 方法摘要:

補充說明:通過呼叫entryset()方法後,返回乙個set>集合,再通過迭代,得到map.entry類,通過該類中方法可以單獨分別獲取key值與value值.如下圖:

———— 1. 2.1 hashtable集合特點 介紹 :

1)底層資料結構為雜湊表結構 。

2)不能存入null值和null鍵,執行緒同步,jdk1.2版以後被hashmap取代。

———— 1. 2.2 hashmap集合特點 介紹 :

1)底層資料結構為雜湊表結構 。

2)可以存入null值和null鍵,執行緒不同步。

———— 1. 2.3 treemap集合特點 介紹 :

1)底層資料二叉樹結構。

2)執行緒不同步,可以用於map集合中鍵值進行排序,當在建構函式中傳入比較器引數(可以參考上面treeset集合特點介紹)。

集合框架總結

list 儲存有序,有索引,可以重複 arraylist 底層是陣列實現的,執行緒不安全,查詢和修改快,增和刪較慢 linkedlist 底層是鍊錶實現的,現成不安全,增和刪較快,查詢和修改較慢 vector 底層是陣列實現的,現成安全,增刪改查都較慢 如何查詢和修改多,用arraylist 如果增...

集合框架總結

問題1 集合和陣列的區別?collection主要有三個子介面 set 表示不允許有重複元素的集合,且無序 list 表示允許有重複元素的集合,且有序 queue 佇列,先進先出,jdk1.5新增,queue主要用於儲存資料,而不是處理資料 stack 繼承自vector,實現乙個後進先出的堆疊。特...

集合框架總結

陣列 之前使用陣列儲存資料 陣列只能存同意型別的資料 陣列長度一旦確定不能改變 陣列物件中基本沒有可用呼叫的方法來運算元組 陣列型別是使用 已有的型別 組合而成 集合 現在使用集合儲存資料 集合中能儲存任意型別的物件 集合的長度可以自動增長 集合物件本身有很多方法可以呼叫,來操作集合中的資料 集合是...