Java之Set集合詳解

2021-08-14 22:46:58 字數 4852 閱讀 2179

set是無序(無下標),不重複的

新增字串:

// 建立乙個hashset

hashsetset = new hashset<>();

// 新增

boolean add = set

.add("d");

boolean add2 = set

.add("d");

set.add("a");

set.add("a");

set.add("b");

set.add("c");

system.out

.println(add);

system.out

.println(add2);

system.out

.println(set);

使用hashset 主要用來 去重

去重:

// 建立乙個hashset 新增6個人

hashsetset = new hashset<>();

set.add(new person("dp", 17));

set.add(new person("dp", 17));

set.add(new person("ygs", 18));

set.add(new person("ygs", 18));

set.add(new person("sxm", 19));

set.add(new person("sxm", 19));

iteratoriterator = set.iterator();

while (iterator.hasnext())

通過重寫物件類的 equals 和 hashcode 去重:

當set集合在進行儲存的時候,hashcode值相同時,會呼叫equals方法進行對比是同乙個物件就不存;當hashcode值不相同時 不用呼叫equals方法,可以直接存

@override

public

inthashcode()

@override

public boolean equals(object obj) else

if (!name.equals(other.name))

return

false;

return

true;

}

linkedhashset 特點:有序 怎麼存就怎麼取出來

新增字串:

linkedhashsetset = new linkedhashset<>();

set.add("l");

set.add("w");

set.add("w");

set.add("a");

set.add("n");

set.add("g");

system.out

.println(set);

輸入乙個字串,去掉其中重複字元

scanner scanner = new scanner(system.in);

string string = scanner.nextline();

linkedhashsetset = new linkedhashset<>();

char chararray = string.tochararray();

for (int i = 0

; i < chararray.length; i++)

system.out

.println(set);

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

arraylistarraylist = new arraylist<>();

arraylist.add("a");

arraylist.add("a");

arraylist.add("b");

arraylist.add("b");

arraylist.add("c");

arraylist.add("c");

linkedhashsetset = new linkedhashset<>();

// 將list所有元素 扔到set中去重

set.addall(arraylist);

// 清空原arraylist

arraylist.clear();

arraylist.addall(set);

system.out

.println(arraylist);

treeset(內部實現二叉樹)

特點:無序 不重複

主要作用:排序

**示例:

// 建立乙個treeset

treesettreeset = new treeset<>();

treeset.add(1);

treeset.add(13);

treeset.add(1);

treeset.add(3);

treeset.add(2);

for (integer integer : treeset)

treeset 排序,需要實現comparable這個介面,編寫排序規則,系統就會按規則來排序

compareto方法:

返回0時 set中只有乙個元素

返回1時 按存進去的順序 正序列印

返回-1時 按存進去的順序 倒序列印

treeset 按二叉樹儲存的:

要儲存的數比根小 放在我的左邊

要儲存的數比根大 放在我的右邊

要儲存的數與根一樣大 不存

列印 按從小到大輸出 (公升序)

使用treeset排序的步驟:

1.讓treeset集合中儲存的物件 實現comparable介面

2.實現compareto方法

3.在compareto方法中實現你要排序的規則

// 建立treeset集合

treesettreeset = new treeset<>();

treeset.add(new worker("sxm0", 11));

treeset.add(new worker("sxm01", 11));

treeset.add(new worker("sxm5", 12));

treeset.add(new worker("sxm4", 12));

treeset.add(new worker("sxm2", 15));

treeset.add(new worker("sxm3", 14));

for (worker worker : treeset)

// 實現comparable介面

public

class

worker

extends

person

implements

comparable

public worker(string name, int age)

// 實現介面中的唯一方法

// 按年齡比較

@override

public

int compareto(worker o)

// 按姓名比較

@override

public

int compareto(worker o)

// 主要條件 按年齡 次要條件 姓名

@override

public

int compareto(worker o)

return

this.getage() - o.getage();

}// 主要比字串長度 然後比年齡 最後比字串

@override

public

int compareto(worker o)

return

this.getage() - o.getage();

}return

this.getname().length() - o.getname().length();

}}

使用比較器來排序步驟:

1.建立乙個類 實現comparator

2.實現介面中的方法 並編寫 比較的規則

3.把該類的物件 傳入 treeset集合中

比較字串長度:

treesetset = new treeset<>(new stringlengthcompareimpl());

set.add("asd");

set.add("asde");

set.add("asdef");

set.add("a");

set.add("asa");

system.out.println(set);

// 建立乙個比較器類 專門來做字串的長度比較

class

stringlengthcompareimpl

implements

comparator

}保留重複的字串:

treesetset = new treeset<>(new keepstringimpl());

set.add("asd");

set.add("asde");

set.add("asdef");

set.add("a");

set.add("asd");

system.out.println(set);

// 保留重複的字串 比較器

class

keepstringimpl

implements

comparator

}

Java之Set集合的學習

在學習完list集合的三個子實現類後就開始學習set集合。set集合和list集合的區別?set集合 不允許元素重複,唯一的 元素可以為null 不能保證迭代的順序恆久不變 底層雜湊表和hascode 無序 儲存和取出不一致 list集合 允許元素重複,並且儲存特點 有序性 儲存和取出一致 通過se...

JAVA 集合子介面之Set

特點1 無序,儲存的元素與新增順序無關 特點2 不可重複 使用元素的equals方法來判定是否重複 特點3 能儲存null元素,只能儲存一次。hash演算法機制 set集合在新增或檢視元素時,當集合中的元素過多時,就會進行多次的比較,效率變低。為了提高效率,在設計元素型別時,提供hash演算法,用於...

Java學習筆記之Set集合

set集合由jdk1.2開始新增,繼承自collection介面。set集合是乙個不包含重複元素的集合。如果允許重複,請使用list集合 set集合中沒有提供額外的方法,只有以下方法需要特殊說明 boolean add e e 如果集合中不包含指定元素,則新增到集合中,並返回true。否則將保持se...