Set集合是是由一串無(wú)序的、不能重復(fù)的相同類型元素構(gòu)成的集合,因?yàn)榇鎯?chǔ)數(shù)據(jù)的時(shí)候要先判斷其元素的hashCode值,不一樣再存儲(chǔ)。
1.Set集合特點(diǎn)
1)Set集合是Collection集合的子類。
2)不包含重復(fù)的元素的集合。
3)沒(méi)有帶索引的方法,所以不能用普通的for循環(huán)遍歷。
2.Set常用方法
1)操作元素
add(Object element):在Set集合的尾部添加指定的元素。
remove(Object element):如果Set集合中存在指定元素,則從Set集合中移除該元素。
clear():從Set集合中移除所有元素。
2)判斷元素
isEmpty():判斷Set集合中是否有元素。沒(méi)有返回true,有返回false。
contains(Object element):判斷Set集合中是否包含指定元素,包含返回true,不包含返回false。
3)其它方法
iterator():返回迭代器(Iterator)對(duì)象,迭代器對(duì)象用于遍歷集合。
size():返回Set集合中的元素?cái)?shù),返回值是int類型。
例如:
import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Set set = new HashSet(); String b = "B"; //向集合中添加元素 set.add("A"); set.add("b"); set.add("C"); set.add("b"); set.add("D"); set.add("b"); set.add("E"); //打印集合元素個(gè)數(shù) System.out.println("集合size = " + set.size()); //打印集合 System.out.println(set); //移出集合中第一個(gè)“B”元素 set.remove(b); //判斷集合中是否包含“B”元素 System.out.println("是否包含\"B\":" + set.contains(b)); //判斷集合是否為空 System.out.println("set集合是空的:" + set.isEmpty()); //清空集合 set.clear(); System.out.println(set); } }
運(yùn)行結(jié)果如下:
集合size = 5 [A, b, C, D, E] 是否包含"B":false set集合是空的:false []
3.哈希值(hashCode)
哈希值是JDK根據(jù)u第項(xiàng)的地址或者數(shù)字運(yùn)算出來(lái)的int類的數(shù)值,Object類中有一個(gè)方式可以獲取哈希值,public int hashCode();返回哈希值。
對(duì)象哈希值的特點(diǎn)如下:
1)同一個(gè)對(duì)象多次調(diào)用和hashCode()方法返回的哈希值是相同的。
2)默認(rèn)情況下,不同對(duì)象的哈希值是不同的,但可以通過(guò)重寫hashCode方法使得哈希值相同。
注意:有不一樣的字符串的哈希值也有一樣,因?yàn)镾tring重寫了hashCode方法,比如“重地”和“通話”,哈希值都是1179395。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程