天天看點

Java HashSet(基礎詳解)一、什麼是HashSet二、HashSet的架構圖三、代碼案例示範:

HashSet

  • 一、什麼是HashSet
  • 二、HashSet的架構圖
  • 三、代碼案例示範:

一、什麼是HashSet

Set集合常用的如:HashSet、TreeSet。HashSet是Set集合的典型實作,HashSet按照Hash算法來存儲集合中的元素,存在以下特點:

  • HashSet 基于 HashMap 來實作的,是一個不允許有重複元素的集合。
  • HashSet 允許有 null 值。
  • HashSet 是無序的,即不會記錄插入的順序。
  • HashSet 實作了 Set 接口。

HashSet 不是線程安全的, 如果多個線程嘗試同時修改 HashSet,則最終結果是不确定的。 您必須在多線程通路時顯式同步對 HashSet 的并發通路。

二、HashSet的架構圖

Java HashSet(基礎詳解)一、什麼是HashSet二、HashSet的架構圖三、代碼案例示範:

由圖可以做到

HashSet實作Set 的接口

HashSet 中的元素實際上是對象,一些常見的基本類型可以使用它的包裝類。

基本類型對應的包裝類表如下:

基本類型 引用類型
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character

三、代碼案例示範:

import java.util.HashSet;

/**
 * @Description: HashSet的案例示範$
 * @Author: dyq
 * @Date: 2021年2月4日$
 */
public class HashSetTest {
    public static void main(String[] args) {
        //初始化一個HashSet
        HashSet<String> seit = new HashSet<>();
        //添加元素可以使用 add() 方法
        seit.add("張三");
        seit.add("李四");
        seit.add("李四");  //李四 被添加了兩次,它在集合中也隻會出現一次,因為集合中的每個元素都必須是唯一的
        seit.add("王五");
        seit.add("劉六");
        seit.add("黃七");
        System.out.println(seit);

        //使用 contains() 方法來判斷元素是否存在于集合當中
        boolean a = seit.contains("劉六");
        System.out.println("劉六是否在集合裡:" + a);

        boolean b = seit.remove("李四");  // 删除元素,删除成功傳回 true,否則為 false
        System.out.println("删除李四是否成功"+b +",集合為:"+seit);

        //計算 HashSet 中的元素數量可以使用 size() 方法
        int c = seit.size();
        System.out.println("集合數量為:"+c);

        // for-each 來疊代 HashSet 中的元素
        System.out.println("for-each 來疊代 HashSet:");
        for (String i : seit) {
            System.out.println(i);
        }

        //删除集合中所有元素可以使用 clear 方法
        seit.clear();
        System.out.println("删除後集合為:"+seit);   //删除後檢視集合還有沒有元素
    }
}

           

結果:

[李四, 張三, 王五, 黃七, 劉六]
劉六是否在集合裡:true
删除李四是否成功true,集合為:[張三, 王五, 黃七, 劉六]
集合數量為:4
for-each 來疊代 HashSet:
張三
王五
黃七
劉六
删除後集合為:[]
           

其實HashSet就是基于Map方法來實作,我們可以看看他們的源碼,本質就是調用map的方法。

Java HashSet(基礎詳解)一、什麼是HashSet二、HashSet的架構圖三、代碼案例示範:

繼續閱讀