Collection 介面 :Collection是最基本的集合接口,聲明了適用於JAVA集合(只包括Set和List)的通用方法。 Set和List都繼承了Conllection,Map
Collection介面的方法:
boolean add(Object o):向集合中加入一個物件的參考
void clear():刪除集合中所有的對象,即不再持有這些物件的參考
boolean isEmpty():判斷集合是否為空
boolean contains(Object o):判斷集合中是否持有特定物件的參考
Iterartor iterator():傳回一個Iterator對象,可以用來遍歷集合中的元素
boolean remove(Object o):從集合中刪除物件的參考
int size():傳回集合中元素的陣列
Object[] toArray():傳回一個陣列,該陣列中包含集合中的所有元素
關於:Iterator() 和toArray() 方法都用於集合的所有的元素,前者返回一個Iterator對象,後者返回一個包含集合中所有元素的數組。
Iterator介面宣告瞭如下方法:
hasNext():判斷集合中元素是否遍歷完畢,如果沒有,就回傳true
next():傳回下一個元素
remove():從集合中刪除上一個有next()方法傳回的元素。
Set(集合):Set是最簡單的一種集合。集合中的物件不按特定的方式排序,並且沒有重複物件。 Set介面主要實作了兩個實作類別:
HashSet:HashSet類別依照雜湊演算法來存取集合中的對象,存取速度比較快
TreeSet:TreeSet類別實作了SortedSet接口,能夠對集合中的對象進行排序。
Set的用法:存放的是物件的引用,沒有重複物件
Set set=new HashSet(); String s1=new String("hello"); String s2=s1; String s3=new String("world"); set.add(s1); set.add(s2); set.add(s3);
System.out.println(set.size());//列印集合中物件的數目為 2。
Set 的 add()方法是如何判斷物件是否已經存放在集合中?
boolean isExists=false; Iterator iterator=set.iterator(); while(it.hasNext()) { String oldStr=it.next(); if(newStr.equals(oldStr)){ isExists=true; } }
List(列表):List的特徵是其元素以線性方式存儲,集合中可以存放重複物件。
List介面主要實作類別包括:
ArrayList() : 代表長度可以改變得數組。可以對元素進行隨機的訪問,向ArrayList()中插入與刪除元素的速度慢。
LinkedList(): 在實作中採用鍊錶資料結構。插入和刪除速度快,存取速度慢。
對於List的隨機存取來說,就是只隨機來檢索位於特定位置的元素。 List 的 get(int index)方法放回集合中由參數index指定的索引位置的對象,下標從「0」 開始。最基本的兩種檢索集合中的所有物件的方法:
1:for循環和get()方法:
for(int i=0; i<list.size();i++){ System.out.println(list.get(i)); }
2:使用迭代器(Iterator):
Iterator it=list.iterator(); while(it.hashNext){ System.out.println(it.next); }
Map(映射): Map是一種把鍵物件和值物件映射的集合,它的每個元素都包含一對鍵物件和值物件。
Map沒有繼承於Collection介面 從Map集合中檢索元素時,只要給出鍵對象,就會傳回對應的值物件。
Map 的常用方法:
1 添加,刪除操作:
Object put(Object key, Object value): 在集合中加入元素
Object remove(Object key): 刪除與KEYvo相關的元素
id put( Map t): 將來自特定映像的所有元素新增至該映像
void clear():從映像中刪除所有映射
2 查詢操作:
Object get(Object key):取得與關鍵字key相關的值。 Map集合中的鍵物件不允許重複,也就說,任兩個鍵物件透過equals()方法比較的結果都是false.,但是可以將任意多個鍵獨享映射到同一個值物件上。
Conllections:集合實用類別 。 Conllections提供了供JAVA集合實用的靜態方法
總結:
JAVA集合的基本用法,都歸納了,上面這些是平常最常用的JAVA集合,具體的其他的,還要參考JDK幫助文檔了,呵呵關於Map的應用,還有很多,具體就是這個,Conllections提供了很多List /Map 實用的方法,對平常開發非常有用。
boolean containsKey(Object key): 判斷映像中是否存在關鍵字key
boolean containsValue(Object value):判斷映像中是否存在值value
int size():傳回目前映像中對應的數量
boolean isEmpty() :判斷映像中是否有任何映射
List按對象進入的順序保存對象,不做排序或編輯操作。 Set對每個物件只接受一次,並使用自己內部的排序方法(通常,你只關心某個元素是否屬於 Set,而不關心它的順序--否則應該使用List)。
Map同樣對每個元素保存一份,但這是基於"鍵"的,Map也有內建的排序,因而不關心元素添加的 順序。如果加入元素的順序對你很重要,應該使用LinkedHashSet或LinkedHashMap.
List的功能方法:
其實有兩種:一種是基本的ArrayList,其優點在於隨機存取元素,另一種是更強大的LinkedList,它並不是為快速隨機存取設計的,而是具有一套更通用的方法。
List:次序是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可以當作堆疊、佇列和雙向佇列使用。
Set的功能方法:
Set具有與Collection完全一樣的接口,因此沒有任何額外的功能,不像前面有兩個不同的List。實際上Set就是Collection,只 是行為不同。 (這是繼承與多態思想的典型應用:表現不同的行為。)Set不保存重複的元素(至於如何判斷元素相同則較為負責)
Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重複元素。加入Set的元素必須定義equals()方法以確保物件的唯一性。 Set與Collection有完全一樣的介面。 Set介面不保證維護元素的次序。
HashSet:為快速找出設計的Set。存入HashSet的物件必須定義hashCode()。
TreeSet:保存次序的Set, 底層為樹狀結構。使用它可以從Set中提取有序的序列。
LinkedHashSet:具有HashSet的查詢速度,且內部使用鍊錶維護元素的順序(插入的次序)。於是在使用迭代器遍歷Set時,結果會依元素插入的順序顯示。
Map的功能方法:
方法put(Object key, Object value)增加一個「值」(想要得東西)和與「值」相關聯的「鍵」(key)(使用它來查找)。方法get(Object key)傳回與給定「鍵」相關聯的「值」。可以用containsKey()和containsValue()測試Map中是否包含某個「鍵」或「值」。
標準的Java類別庫中包含了幾種不同的Map:HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap。它們都有相同的基本介面Map,但是行為、效率、排序策略、保存物件的生命週期和判定「鍵」等價的策略等各不相同。
執行效率是Map的一大問題。看看get()要做哪些事,就會明白為什麼在ArrayList中搜尋「鍵」是相當慢的。而這正是HashMap提高速 度的地方。 HashMap使用了特殊的值,稱為「散列碼」(hash code),來取代對鍵的緩慢搜尋。
「散列碼」是「相對唯一」用以代表物件的int值,它是透過將該物件的某些資訊進行轉換而產生的。所有Java物件都能產生雜湊碼,因為hashCode()是定義在基底類別Object中的方法。
HashMap就是使用物件的hashCode()進行快速查詢的。此方法能夠顯著提高效能。
Map : 維護「鍵值對」的關聯性,讓你可以透過「鍵」找出「值」
HashMap:Map基於散列表的實作。插入和查詢「鍵值對」的開銷是固定的。可以透過構造器設定容量capacity和負載因子load factor,以調整容器的效能。
LinkedHashMap:類似HashMap,但是迭代遍歷它時,取得「鍵值對」的順序是其插入次序,或是最近最少使用(LRU)的次序。只比HashMap慢一點。而在迭代存取時發而更快,因為它使用鍊錶來維護內部次序。
TreeMap :基於紅黑樹資料結構的實作。當查看「鍵」或「鍵值對」時,它們會被排序(順序由Comparabel或Comparator決定)。 TreeMap的特徵在 於,你得到的結果是經過排序的。 TreeMap是唯一的帶有subMap()方法的Map,它可以傳回一個子樹。
WeakHashMap :弱鍵(weak key)Map,Map中使用的物件也被允許釋放: 這是為解決特殊問題設計的。如果沒有map之外的引用指向某個“鍵”,則此“鍵”可以被垃圾收集器回收。
IdentifyHashMap:使用==代替equals()對「鍵」進行比較的hash map。專為解決特殊問題而設計。
更多Java中的Set、List、Map的用法與區別介紹相關文章請關注PHP中文網!

本文討論了使用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 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器