工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java LinkedHashSet

Java LinkedHashSet

このチュートリアルでは、例を使って Java LinkedHashSet クラスとそのメソッドについて学びます。

LinkedHashSet Java コレクション フレームワークのクラスは、ハッシュ テーブルとリンク リスト データ構造の両方の機能を提供します。

Set インターフェイスを実装します。

LinkedHashSet の要素 HashSet と同様のハッシュ テーブルに格納されます。

ただし、リンクされたハッシュ セットは、そのすべての要素の二重リンク リストを内部的に維持します。リンクされたリストは、要素がハッシュ テーブルに挿入される順序を定義します。


LinkedHashSet を作成する

リンクされたハッシュ セットを作成するには、java.util.LinkedHashSet をインポートする必要があります。 最初にパッケージ化します。

パッケージをインポートしたら、リンクされたハッシュ セットを Java で作成する方法を次に示します。

// LinkedHashSet with 8 capacity and 0.75 load factor
LinkedHashSet<Integer> numbers = new LinkedHashSet<>(8, 0.75);

ここでは、numbers という名前のリンクされたハッシュ セットを作成しました。 .

new LinkedHashSet<>(8, 0.75) の部分に注意してください .ここで、最初のパラメータは容量です 2 番目のパラメータは loadFactor です .

デフォルトの容量と負荷率

容量と負荷係数を定義せずに、リンクされたハッシュ セットを作成することができます。たとえば、

// LinkedHashSet with default capacity and load factor
LinkedHashSet<Integer> numbers1 = new LinkedHashSet<>();

デフォルトでは、


他のコレクションからの LinkedHashSet の作成

他のコレクションのすべての要素を含むリンクされたハッシュ セットを作成する方法は次のとおりです。

import java.util.LinkedHashSet;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an arrayList of even numbers
        ArrayList<Integer> evenNumbers = new ArrayList<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("ArrayList: " + evenNumbers);

        // Creating a LinkedHashSet from an ArrayList
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>(evenNumbers);
        System.out.println("LinkedHashSet: " + numbers);
    }
}

出力

ArrayList: [2, 4]
LinkedHashSet: [2, 4]

LinkedHashSet のメソッド

LinkedHashSet クラスは、リンクされたハッシュ セットに対してさまざまな操作を実行できるようにするメソッドを提供します。


要素を LinkedHashSet に挿入

たとえば、

import java.util.LinkedHashSet;

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

        // Using add() method
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("LinkedHashSet: " + evenNumber);

        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        
        // Using addAll() method
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New LinkedHashSet: " + numbers);
    }
}

出力

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

LinkedHashSet 要素へのアクセス

リンクされたハッシュ セットの要素にアクセスするには、 iterator() を使用できます。 方法。この方法を使用するには、 java.util.Iterator をインポートする必要があります パッケージ。たとえば、

import java.util.LinkedHashSet;
import java.util.Iterator;

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

        // Calling the iterator() method
        Iterator<Integer> iterate = numbers.iterator();

        System.out.print("LinkedHashSet using Iterator: ");

        // Accessing elements
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

出力

LinkedHashSet: [2, 5, 6]
LinkedHashSet using Iterator: 2, 5, 6,

注意 :


HashSet から要素を削除

たとえば、

import java.util.LinkedHashSet;

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

        // Using the remove() method
        boolean value1 = numbers.remove(5);
        System.out.println("Is 5 removed? " + value1);

        boolean value2 = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + value2);
    }
}

出力

LinkedHashSet: [2, 5, 6]
Is 5 removed? true
Are all elements removed? true

設定操作

LinkedHashSet のさまざまなメソッド クラスを使用して、さまざまなセット操作を実行することもできます。


セットの結合

2 つは 2 つのセット間の結合を実行します。addAll() を使用できます 方法。たとえば、

import java.util.LinkedHashSet;

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

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

        // Union of two set
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

出力

LinkedHashSet1: [2, 4]
LinkedHashSet2: [1, 3]
Union is: [1, 3, 2, 4]

集合の交差

2 つのセット間の交差を実行するには、retainAll() を使用できます。 方法。例えば

import java.util.LinkedHashSet;

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

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

        // Intersection of two sets
        evenNumbers.retainAll(primeNumbers);
        System.out.println("Intersection is: " + evenNumbers);
    }
}

出力

LinkedHashSet1: [2, 3]
LinkedHashSet2: [2, 4]
Intersection is: [2]

セットの違い

2 つのセットの差を計算するには、removeAll() を使用できます。 方法。たとえば、

import java.util.LinkedHashSet;

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

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

        // Difference between LinkedHashSet1 and LinkedHashSet2
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference : " + primeNumbers);
    }
}

出力

LinkedHashSet1: [2, 3, 5]
LinkedHashSet2: [1, 3, 5]
Difference: [2]

サブセット

セットが別のセットのサブセットであるかどうかを確認するには、 containsAll() を使用できます 方法。たとえば、

import java.util.LinkedHashSet;

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

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

        // Check if primeNumbers is a subset of numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result);
    }
}

出力

LinkedHashSet1: [1, 2, 3, 4]
LinkedHashSet2: [2, 3]
Is LinkedHashSet2 is a subset of LinkedHashSet1? true

LinkedHashSet のその他のメソッド

メソッド 説明
clone() LinkedHashSet のコピーを作成します
contains() LinkedHashSet を検索します 指定された要素に対して、ブール値の結果を返します
isEmpty() LinkedHashSet かどうかをチェックします 空です
size() LinkedHashSet のサイズを返します
clear() LinkedHashSet からすべての要素を削除します

LinkedHashSet について詳しく知るには メソッドについては、Java LinkedHashSet (公式の Java ドキュメント) にアクセスしてください。


LinkedHashSet 対。ハッシュセット

両方 LinkedHashSetHashSet Set を実装します インターフェース。ただし、両者にはいくつかの違いがあります。



LinkedHashSet 対。ツリーセット

LinkedHashSet の主な違いは次のとおりです。 と TreeSet :


Java

  1. Java オペレーター
  2. Java コメント
  3. Java if...else ステートメント
  4. Java for-each ループ
  5. Java 文字列
  6. Java インターフェイス
  7. Java匿名クラス
  8. Java try-with-resources
  9. Java アノテーション
  10. Java アサーション
  11. Java ベクトル