Set集合 去重和比較方法

2021-08-20 04:38:19 字數 3116 閱讀 5019

set集合

特點: 無序(沒有下標)  集合中的元素不重複

hashset

hashset具有去重功能

例:建立乙個hashset 儲存 f f a a b b d d  

hashsetset = new hashset<>();

set.add("f");

set.add("f");

set.add("a");

set.add("a");

set.add("b");

set.add("b");

set.add("d");

set.add("d");

// 增強for迴圈

for (string string : set)

列印結果 a b d f 

去重且無序(不是按照輸出順序列印)

注意: 列印物件不會自動去重 需要重寫equals和hashcode方法

去重系統類的物件時不用重寫

去重: 當新增到set的物件 hashcode碼不相同時 不會呼叫equals方法,物件直接存到set集合中

hashset相同時 才會呼叫equals方法 檢視是否是同乙個物件(是否重複)  是---則無法存入

public static void main(string args) 

}

linkedhashset  有序的hashset(按照存入集合的順序列印)

// 去重系統類的物件時候 不用重寫equals hashset方法了

public class d1fun4

for (integer integer : set)

}

例:利用set集合 

去除arraylist集合中的重複元素(操作原arraylist)

public static void main(string args)
treeset

treeset用來排序

建立乙個treeset 新增幾個數 檢視效果

treesettreeset = new treeset<>();

treeset.add(66);

treeset.add(66);

treeset.add(22);

treeset.add(77);

treeset.add(11);

treeset.add(11);

system.out.println(treeset);

輸出結果自動去重排序

treeset 存入物件

public static void main(string args)
列印結果異常

注意:treeset存入物件 列印時 需要實現

comparable介面 或者 建立比較器

寫treeset排序規則步驟:

1.實現comparable介面

// 實現comparable介面

public class person implements comparable

2.重寫介面中的 comparableto() 方法

3.編寫你想要的排序規則

@override

public int compareto(person o)

輸出規則: 以公升序輸出

compareto返回值:

返回0  只有乙個元素

返回正數  列印的資料 正序輸出(不會去重 需要寫compareto方法

)返回負數  列印的資料 倒序輸出

public static void main(string args)
此時列印報錯 需

實現comparable介面 或者 建立比較器

// 實現comparable介面

public class person implements comparable

按需求重寫規則
// 重寫比較規則

@override

public int compareto(person1 o)

例:

集合中儲存字串 按字串長度排序

使用比較器 來進行排序

在比較器中寫需求的排序規則

利用treeset的構造方法

直接將比較器的實現類傳進去

在類的外部建立比較器

// 建立比較器

class stringlength implements comparator

}

public class d2fun3 

}}

例:

程式啟動後, 可以從鍵盤輸入接收多個整數,

直到輸入quit時結束輸入. 

把所有輸入的整數倒序排列列印

public class d2fun6 

int num = integer.parseint(string);

set.add(num);

} system.out.println(set);

}}

// 建立比較器

class intprint implements comparator

}

set 的方法以及set 去重

set 迴圈的時候,key 和value的值是一樣的 建立 let setarr new set 增 setarr.add 1,2,3,1 2 3 console.log setarr.size 6 刪 set.clear 減 set.delete 1 查 set.has 1 true 1 set沒...

java中集合set去重使用

第一種,list,list用set去重時,無需重寫equals方法 listlist new arraylist for int i 0 i 10 i list.add 3 list.add 5 for int m 0 m list.size m setset new hashset for int...

利用set集合進行list集合高效去重

最近幫朋友做專案,自己也在學習資料結構和演算法分析,發現要想專案高效率的執行,資料結構和演算法是必須要掌握的一門技術,剛好專案中就碰到了處理資料的地方。首先我先說說需求吧,有兩個集合a b,在a集合去除b集合中people物件的資料,只要a集合中people的name和sublist集合中peopl...