搜尋
首頁Javajava教程java中集合的差別是什麼?

java中集合的差別是什麼?

Nov 18, 2019 pm 05:49 PM
java集合

java中集合的差別是什麼?

java中集合的差異是什麼?

在java中集合主要分為:List,Set,Map三種,其中List與Set是繼承自Collection,而Map不是。

List與Set的差異:List中的元素有存放順序,並且可以存放重複元素,檢索效率高,插入刪除效率低,Set沒有存放順序,而且不可以存放重複元素,後來的元素會把前面重複的元素替換掉,檢索效率低,插入刪除效率高。 (Set儲存位置是由它的HashCode碼決定的,所以它儲存的物件必須有equals()方法,而且Set遍歷只能用迭代,因為它沒有下標。)

##1 、最常用的集合:ArrayList

特點:ArrayList集合中元素儲存的位置是連續的,所以查詢起來會比較快捷,但是執行插入刪除操作會比較麻煩一點,會引起其他元素位置的變化。

注意:list中儲存的是物件的引用,而不是物件本身。如果不清楚這一點會在這裡有個坑,例如:

有人為了節省優化程式碼,節省虛擬機器記憶體會這麼寫程式碼:

List<List<String>> list=new ArrayList<>();
List<String> list2=new ArrayList<>();
for(int i=0;i<10;i++){
    list2.add(""+i);    
    list.add(list2);
    list2.clear();
}

這樣寫雖然可以一個物件重複使用,但是,list儲存的是物件的引用,當list2.clear();的時候,list中的list2也會clear,這樣最後得到的就只能是一堆空的集合了。

2、與最常用集合相反的集合:LinkedList

LinkedList與ArrayList是互補的,所以ArrayList的優點就是LinkedList的缺點,ArrayList的缺點就是LinkedList的優點。

特點:LinkedList中元素位置是任意的,所以執行插入刪除操作效率較高,查詢效率較低。

3、與一般集合都相反的集合:Vector

為什麼說它與一般集合都相反呢?因為它是一種老的動態數組,很多方法都用synchonized修飾,所以它是線程安全得,而一般集合是線程不安全得。

特點:多個執行緒同時存取不會發生不確定的結果,但是它的效率會比較低,如果要考慮執行緒安全的話可以用它。

4、Set中最常使用的集合:HashSet

在用Set集合的時候我幾乎用的都是HashSet,HashSet是使用Hash表實現的,集合裡面的元素是無序得,可以有null值,但不能有重複元素。

特點:因為相同的元素有相同的hashCode,所以不能有重複元素

5、Set中第二常用的集合:TreeSet

TreeSet是用二元樹結構實現的集合

特點:集合中的元素是有順序得,不允許放入null,同樣不能放入重複元素。

6、第二常用的集合:HashMap

經常遇到需要使用鍵值對儲存的場景,而HashMap是用得最多的一種鍵值對儲存的集合。

特點:HashMap允許空鍵值,而且它是非執行緒安全的,所以插入、刪除和定位元素會比較快。

7、一些不太常用的Map集合:TreeMap,HashTable

#TreeMap是基於紅黑樹實現的,適用於按自然順序火茲定於順序遍歷key。

HashTable是基於HashCode實現的,但它是執行緒安全的,所以會比HashMap效率低,而且不允許null值。

推薦教學:

Java教學

以上是java中集合的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

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

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

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

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

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

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

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

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。