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...