Java HashSet使用方法教程及示例程式碼
簡介
HashSet類,是存在於java.util包中的類 。同時也被稱為集合,該容器中只能儲存不重複的物件。本文主要介紹Java HashSet使用方法教程及示例程式碼,還有HashMap和HashSet的區別。
1、Java HashSet
HashSet
實現了Set介面,它不允許集合中有重複的值,當將物件儲存在HashSet之前,要先確保物件重寫equals()和hashCode()方法,這樣才能比較物件的值是否相等,以確保set中沒有儲存重複的物件。如果我們沒有重寫這兩個方法,將會使用這個方法的預設實現。
例如:
建立一個名為langs的HashSet物件,該物件將儲存字串:
importjava.util.HashSet; // 匯入HashSet HashSet<String> langs = new HashSet<String>();
2、訪問HashSet中的元素
HashSet
類具有許多有用的方法。 例如,要向其中新增元素,請使用add()
方法:
例如:
// 匯入HashSet import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet<String> langs = new HashSet<String>(); langs.add("c"); langs.add("java"); langs.add("python"); langs.add("cjavapy"); langs.add("javascript"); System.out.println(langs); } }
注意:集合中的每個元素都必須是唯一的。
3、判斷HashSet中的元素
要判斷HashSet
中是否存在某個元素,請使用contains()
方法:
例如:
langs.contains("cjavapy");
4、刪除HashSet中的元素
要刪除元素,請使用remove()
方法:
例如:
langs.remove("cjavapy");
要刪除所有元素,請使用clear()
方法:
例如:
langs.clear();
5、HashSet size
要找出有多少個元素,需要使用size方法:
例如:
langs.size();
6、迴圈遍歷HashSet中的元素
通過for-each迴圈遍歷HashSet
的元素:
例如:
for (String i : langs) { System.out.println(i); }
7、其它型別
HashSet中的專案實際上是物件。在上面的示例中,我們建立了 專案 (物件)型別為字串。Java中的String
是一個物件(不是原始型別)。要使用其他型別,例如int,必須指定等效的包裝類:Integer
。對於其他基本型別,請使用:Boolean
表示布林值,Character
表示char,Double
表示double,等等。
基本型別對應的包裝類表如下:
基本型別 |
引用型別 |
boolean |
Boolean |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
例如:
使用儲存Integer
物件的HashSet
:
import java.util.HashSet; public class Main { public static void main(String[] args) { // 建立HashSet物件 HashSet<Integer> numbers = new HashSet<Integer>(); // 新增 numbers.add(4); numbers.add(5); numbers.add(8); // 判斷指定值是否包含 for(int i = 1; i <= 10; i++) { if(numbers.contains(i)) { System.out.println(i + " 存在numbers中"); } else { System.out.println(i + " 存在numbers中"); } } } }
8、HashMap和HashSet的區別
1) HashSet實現了Set介面, 僅儲存物件; HashMap實現了 Map介面, 儲存的是鍵值對.
2) HashSet底層其實是用HashMap實現儲存的, HashSet封裝了一系列HashMap的方法. 依靠HashMap來儲存元素值,(利用hashMap的key鍵進行儲存), 而value值預設為Object物件. 所以HashSet也不允許出現重複值, 判斷標準和HashMap判斷標準相同, 兩個元素的hashCode相等並且通過equals()方法返回true。
HashMap |
HashSet |
HashMap實現了Map介面 |
HashSet實現了Set介面 |
HashMap儲存鍵值對 |
HashSet僅僅儲存物件 |
使用put()方法將元素放入map中 |
使用add()方法將元素放入set中 |
HashMap中使用鍵物件來計算hashcode值 |
HashSet使用成員物件來計算hashcode值, 對於兩個物件來說hashcode可能相同, 所以equals()方法用來判斷物件的相等性, 如果兩個物件不同的話,那麼返回false |
HashMap比較快,因為是使用唯一的鍵來獲取物件 |
HashSet較HashMap來說比較慢 |
原文地址:https://www.cjavapy.com/article/1624/