ホームページ  >  記事  >  Java  >  Java で TreeSet 関数を使用して順序付きセット操作を行う方法

Java で TreeSet 関数を使用して順序付きセット操作を行う方法

王林
王林オリジナル
2023-06-26 14:51:101770ブラウズ

Java の TreeSet は、赤黒ツリーに基づいて実装された順序付きセットです。要素がサイズ順にソートされており、要素の追加、削除、検索が素早く行えるのが特徴です。この記事では、Java で TreeSet 関数を使用して順序付きセット操作を実行し、実際のプログラミングに適用できるようにする方法を紹介します。

1. TreeSet の基本操作

1. TreeSet オブジェクトの作成

TreeSet を使用するには、まず TreeSet オブジェクトを作成する必要があります。パラメーターなしのコンストラクターを使用して空の TreeSet を作成することも、TreeSet オブジェクトの作成時に Comparator を指定して照合順序をカスタマイズすることもできます。

サンプル コード:

TreeSet<Integer> set = new TreeSet<>();
TreeSet<String> set2 = new TreeSet<>(new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        // 自定义排序规则
        return o1.compareToIgnoreCase(o2);
    }
});

2. 要素の追加

add() メソッドを使用して要素を TreeSet に追加します。 TreeSet は要素をサイズ順に自動的に並べ替え、同じ要素は 1 回だけ保存されます。

サンプル コード:

set.add(3);
set.add(1);
set.add(2);
set.add(3);
// 结果为[1, 2, 3]
System.out.println(set);

3. 要素の削除

remove() メソッドを使用して、TreeSet 内の要素を削除できます。

サンプル コード:

set.remove(3);
// 结果为[1, 2]
System.out.println(set);

4. 要素が存在するかどうかを確認する

contains() メソッドを使用して、要素が TreeSet に存在するかどうかを確認できます。

サンプル コード:

boolean contains = set.contains(2);
// 结果为true
System.out.println(contains);

5. 要素数の取得

size() メソッドを使用して、TreeSet 内の要素の数を取得できます。

サンプル コード:

int size = set.size();
// 结果为2
System.out.println(size);

6. 要素の走査

for ループまたは forEach() メソッドを使用して、TreeSet 内の要素を走査できます。

サンプルコード:

for (Integer i : set) {
    System.out.print(i + " ");
}
System.out.println();

set.forEach(System.out::println);

出力結果:

1 2 
1
2

2. TreeSet の高度な操作

1. 最初の要素と最後の要素を取得します

first() メソッドと last() メソッドを使用して、TreeSet 内の最初の要素と最後の要素を取得できます。

サンプル コード:

Integer first = set.first();
Integer last = set.last();
// 结果为1 2
System.out.println(first + " " + last);

2. サブコレクションの取得

subSet() メソッドを使用して、fromElement (含む) を含む TreeSet のサブコレクションを取得できます。 ) toElement 間の要素に (排他的)。 fromElement が指定されていない場合は、TreeSet の最初の要素から開始することを意味します。

サンプル コード:

TreeSet<Integer> subSet = (TreeSet<Integer>) set.subSet(1, 2);
// 结果为[1]
System.out.println(subSet);

TreeSet<String> subSet2 = (TreeSet<String>) set2.subSet("A", "c");
// 结果为[b, C]
System.out.println(subSet2);

サブコレクションが変更されると、元の TreeSet も変更されることに注意してください。

3. head 要素または tail 要素のサブコレクションを取得する

headSet() メソッドと tailSet() メソッドを使用して、head (toElement を除く) または tail (fromElement を含む) を取得できます。 ) TreeSet の要素のサブコレクション。

サンプル コード:

TreeSet<Integer> headSet = (TreeSet<Integer>) set.headSet(2);
// 结果为[1]
System.out.println(headSet);

TreeSet<String> tailSet = (TreeSet<String>) set2.tailSet("b");
// 结果为[b, C]
System.out.println(tailSet);

サブコレクションが変更されると、元の TreeSet も変更されることにも注意してください。

4. 指定した要素より小さいまたは大きい要素を取得する

lower() メソッド、floor() メソッド、higher() メソッド、ceiling() メソッドを使用して取得できます。指定された要素より小さいまたは大きい要素 大きな要素。

サンプル コード:

Integer lower = set.lower(2);
Integer floor = set.floor(2);
Integer higher = set.higher(1);
Integer ceiling = set.ceiling(1);
// 结果为1 2 2 1
System.out.println(lower + " " + floor + " " + higher + " " + ceiling);

次の点に注意してください:

  • lower() メソッドと Floor() メソッドの違いは次のとおりです。 ) メソッドは指定された比率を取得します より小さな要素を持つ最大の要素は、指定された要素よりも小さい最大の要素であり、floor() メソッドは指定された要素よりも小さい最も近い要素、つまり最も近い要素を取得します指定された要素以下です。
  • higher() メソッドと Ceiling() メソッドの違いは次のとおりです。higher() メソッドは、指定された要素よりも大きい最小の要素、つまり、指定された要素よりも大きい最小の要素を取得します。指定された要素; 一方で、ceiling() メソッドは、指定された要素より大きい最小の要素、指定された要素以上の最も近い要素を取得します。

3. 概要

この記事では、Java の TreeSet 関数の基本操作と高度な操作を紹介します。順序付けられた収集操作を実行するための実際のニーズに応じて、対応する操作方法を選択できます。なお、subSet()メソッド、headSet()メソッド、tailSet()メソッドを使用する場合、サブセットが変更されると元のTreeSetも変更されるので注意が必要です。

以上がJava で TreeSet 関数を使用して順序付きセット操作を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。