容器類別可以大大提高程式設計效率和程式設計能力,在java2中,所有的容器都由SUN公司的Joshua Bloch進行了重新設計,豐富了容器類別庫的功能。
Java2容器類別庫的用途是“保存物件”,它分為兩個類別:
Collection----一組獨立的元素,通常這些元素都服從某種規則。 List必須保持元素特定的順序,而Set不能有重複元素。
Map----一組成對的「鍵值對」對象,即其元素是成對的對象,最典型的應用就是資料字典,並且還有其它廣泛的應用。另外,Map可以傳回其所有鍵組成的Set和其所有值組成的Collection,或其鍵值對組成的Set,並且還可以像數組一樣擴展多維Map,只要讓Map中鍵值對的每個「值」是一個Map即可。
1.迭代器
迭代器是一種設計模式,它是一個對象,它可以遍歷並選擇序列中的對象,而開發人員不需要了解該序列的底層結構。迭代器通常被稱為“輕量級”對象,因為創建它的代價很小。
Java中的Iterator功能比較簡單,並且只能單向移動:
(1) 使用方法iterator()要求容器回傳一個Iterator。第一次呼叫Iterator的next()方法時,它會傳回序列的第一個元素。
(2) 使用next()獲得序列中的下一個元素。
(3) 使用hasNext()檢查序列中是否還有元素。
(4) 使用remove()將迭代器新傳回的元素刪除。
Iterator是Java迭代器最簡單的實現,為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和刪除元素。
2.List的功能方法
List(interface): 次序是List最重要的特點;它確保維護元素特定的順序。 List為Collection加入了許多方法,使得能夠在List中間插入與移除元素(只建議LinkedList使用)。一個List可以產生ListIterator,使用它可以從兩個方向遍歷List,也可以從List中間插入和刪除元素。
ArrayList: 由陣列實作的List。它答應對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。 ListIterator只應該用來由後向前遍歷ArrayList,而不是用來插入和刪除元素,因為這比LinkedList開銷要大得多。
LinkedList: 對順序存取進行了最佳化,向List中間插入與刪除得開銷不大,隨機存取則相對較慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),這些方法(沒有在任何介面或基類中定義過)使得LinkedList可以當作堆疊、佇列和雙向隊列使用。
3.Set的功能方法
Set(interface): 存入Set的每個元素必須是唯一的,因為Set不保存重複元素。加入Set的Object必須定義equals()方法以確保物件的唯一性。 Set與Collection有完全一樣的介面。 Set介面不保證維護元素的次序。
HashSet: 為快速尋找而設計的Set。存入HashSet的物件必須定義hashCode()。
TreeSet: 保持次序的Set,底層為樹結構。使用它可以從Set中提取有序的序列。
LinkedHashSet: 具有HashSet的查詢速度,且內部使用鍊錶維護元素的順序(插入的次序)。於是在使用迭代器遍歷Set時,結果會依元素插入的順序顯示。
HashSet採用雜湊函數對元素進行排序,這是專門為快速查詢而設計的;TreeSet採用紅黑樹的資料結構進行排序元素;LinkedHashSet內部使用雜湊以加快查詢速度,同時使用鍊錶維護元素的次序,使得看起來元素是以插入的順序保存的。需要注意的是,產生自己的類別時,Set需要維護元素的儲存順序,因此要實作Comparable介面並定義compareTo()方法。
以上就是兩種特殊的Java容器類List和Set分析的內容,更多相關文章請關注PHP中文網(www.php.cn)!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器