Java筆記 集合

2021-09-01 14:47:06 字數 1994 閱讀 1084

hashset內部的資料結構是雜湊表。在儲存元素時,要使用hashcode方法確定位置。如果位置相同,再根據元素的equals來確定是否相同。

注:在string中,複寫了equals方法,比較的是字串的內容。

@override

public int hashcode()

@override

public boolean equals(object obj)

以上**是在hashset中自定義person物件,在person物件中,要覆蓋兩種方法。

補充:linkedhashset內部有雙向鍊錶確保有序。

想要輸出map集合中的key和value,一般採用先使用keyset獲取key值,返回的是乙個key的set集合,再通過迭代器get(key)獲取對應的value值。而map.entry可以一次性獲取鍵值對。

hashmaphm = new hashmap();

hm.put(1, "a");

hm.put(2, "aa");

hm.put(3, "aca");

hm.put(4, "bab");

iterator> it = hm.entryset().iterator();

while(it.hasnext())

以上**是在hashmap中通過map.entry獲取鍵值對。

treeset和treemap 具備排序功能

實現tree集合,必須實現比較方法:

1.新建class 實現comparator介面,覆蓋compare方法,並new乙個該類的物件,作為引數傳遞給tree集合。

注:string字串自帶compareto功能,實現兩個字串比較,大於返回正數,小於返回負數,等於返回0.

public class comparebyname implements comparator

}

以上**為在treemap集合中實現自定義物件student(string name, int age),自定義比較函式,實現根據名字(內建compareto)比較字串的大小。當兩個字串相同時,再比較兩個物件的年齡。由於tree集合中字元不能重複,所以當兩個字串比較之後相同時,後乙個將覆蓋前乙個。

treemaptm = new treemap(new comparebyname());
新建treemap物件時,實現該比較函式即可。

2.自定義物件時,實現compareable介面,並覆蓋compareto方法,即讓元素本身具備比較方法。

public class person implements comparable
以上**是在treeset集合實現自定義物件person時,讓person實現comparable介面,並複寫compareto方法,通過比較年齡實現比較。當年齡相同時,再比較字串name,如果age和name都相同,只輸出一次。

treeset ts = new treeset();

ts.add(new person("john",22));

ts.add(new person("zoe",20));

ts.add(new person("allen",19));

ts.add(new person("jack",27));

ts.add(new person("lily",20));

輸出為:

allen…19

lily…20

zoe…20

john…22

jack…27

補充:linkedhashmap可實現有序輸出。

list中元素有序且可重複,可使用set方法修改某個位置上的元素。

而set中元素無序且不能重複,不能使用set方法修改某個位置上的元素。

想要遍歷set中的元素,只能使用iterator和foreach方法,不能使用list的get方法。

java集合筆記

1 儲存物件 陣列和集合 陣列儲存物件的弊端 1.一旦建立,其大小不可變。2 陣列存放的物件個數是不可知的。2 collection介面 子介面 a set 無序性 不可重複的元素 hashset,linkedhashset,treeset b list 有序性 可以重複的元素 arraylist ...

java 集合筆記

常用 arraylist子類,vector子類 區別 arraylist是非同步處理,效能高,但是執行緒不安全。vector是同步處理,效能低,但是執行緒安全 用法都一樣。與list介面區別是不能加入重複的元素。常用 hashset子類,treeset子類 hashset 無順序存放。treeset...

Java集合筆記

collection中的常用功能 arraylist,linkedlist,hashset,treeset boolean add object e 向集合中新增元素 void clear 清空集合中所有元素 boolean contains object o 判斷集合中是否包含某個元素 boole...