Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java HashSet 類

在本教程中,我們將學習Java HashSet類。我們將借助示例學習不同的哈希集方法和操作。

Java Collections框架的HashSet類提供了哈希表數(shù)據(jù)結構的功能。

它實現(xiàn)Set接口。

Java HashSet類實現(xiàn)Set接口。

創(chuàng)建一個哈希集

為了創(chuàng)建哈希集,我們必須先導入java.util.HashSet包。

導入包后,就可以在Java中創(chuàng)建哈希集。

//具有8個容量和0.75負載因子的HashSet
HashSet<Integer> numbers = new HashSet<>(8, 0.75);

在這里,我們創(chuàng)建了一個名為的哈希集numbers。

注意,新的部分HashSet<>(8, 0.75)。這里,第一參數(shù)是容量,并且第二參數(shù)是負載因子

  • capacity -該哈希集的容量為8。意味著,它可以存儲8個元素。

  • loadFactor - 此哈希集的負載因子為0.6。這意味著,只要我們的哈希集填充了60%,元素就會移到新哈希表中,該哈希表的大小是原始哈希表的兩倍。

默認容量和負載因子

創(chuàng)建散列表而不定義其容量和負載因子是可能的。例如,

//具有默認容量和負載因子的HashSet
HashSet<Integer> numbers1 = new HashSet<>();

默認,

  • 哈希集的容量將為 16

  • 負載因子將為 0.75

HashSet的方法

HashSet類提供了各種方法,這些方法使我們可以對集合執(zhí)行各種操作。

將元素插入HashSet

  • add() - 將指定的元素插入集合

  • addAll() - 將指定集合的所有元素插入集合

例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();

        // 使用 add() 方法
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);

        HashSet<Integer> numbers = new HashSet<>();
        
        // 使用 addAll() 方法
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

輸出結果

HashSet: [2, 4, 6]
New HashSet: [2, 4, 5, 6]

訪問HashSet元素

要訪問哈希集合的元素,我們可以使用iterator()方法。為了使用此方法,我們必須導入java.util.Iterator包。例如,

import java.util.HashSet;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);

        // 調(diào)用iterator()方法
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("使用Iterator的HashSet: ");
        //訪問元素
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

輸出結果

HashSet: [2, 5, 6]
使用Iterator的HashSet: 2, 5, 6,

刪除元素

  • remove() - 從集合中刪除指定的元素

  • removeAll() - 從集合中刪除所有元素

例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);

        //使用remove()方法
        boolean value1 = numbers.remove(5);
        System.out.println("值5被刪除? " + value1);

        boolean value2 = numbers.removeAll(numbers);
        System.out.println("所有的元素都被移除了嗎? " + value2);
    }
}

輸出結果

HashSet: [2, 5, 6]
值5被刪除? true
所有的元素都被移除了嗎? true

Set操作方法

HashSet類的各種方法也可以用于執(zhí)行各種set操作。

Set集合并集

執(zhí)行兩個集合之間的并集,我們可以使用addAll()方法。例如

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet1: " + evenNumbers);

        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("HashSet2: " + numbers);

        //集合并集
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

輸出結果

HashSet1: [2, 4]
HashSet2: [1, 3]
Union is: [1, 2, 3, 4]

Set集合的交集

要執(zhí)行兩個集合之間的交集,我們可以使用retainAll()方法。例如

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet2: " + evenNumbers);

        //集合的交集
        evenNumbers.retainAll(primeNumbers);
        System.out.println("交集: " + evenNumbers);
    }
}

輸出結果

HashSet1: [2, 3]
HashSet2: [2, 4]
交集: [2]

Set集合的差集

要計算兩組之間的差集,我們可以使用removeAll()方法。例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        primeNumbers.add(5);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        System.out.println("HashSet2: " + oddNumbers);

        //HashSet1和HashSet2之間的差集
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference : " + primeNumbers);
    }
}

輸出結果

HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
差集: [2]

Set集合的子集

要檢查一個集合是否是另一個集合的子集,我們可以使用containsAll()方法。例如,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("HashSet1: " + numbers);

        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet2: " + primeNumbers);

        //檢查primeNumbers是否是numbers的子集
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("HashSet2是HashSet1的子集嗎? " + result);
    }
}

輸出結果

HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
HashSet2是HashSet1的子集嗎? true

HashSet的其他方法

方法描述
clone()創(chuàng)建HashSet副本
contains()在中搜索HashSet指定的元素,并返回布爾結果
isEmpty()檢查是否HashSet為空
size()返回HashSet的大小
clear()從HashSet中刪除所有元素

為什么選擇HashSet?

在Java中,如果我們必須隨機訪問元素,則通常使用HashSet。 這是因為哈希表中的元素是使用哈希碼訪問的。

元素的hashcode是唯一標識,它有助于標識散列表中的元素。

HashSet不能包含重復的元素。因此,每個散列集元素都有一個惟一的hashcode。

注意: HashSet不同步。也就是說,如果多個線程同時訪問哈希集合,并且其中一個線程修改了哈希集合。然后,它必須在外部同步。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清