広告

Java : SortedSet - API使用例

SortedSet (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

その要素に対して全体順序付けを提供するSetです。 要素の順序付けは、その自然順序付けに従って行われるか、セット構築時に通常提供されるComparatorを使って行われます。 セットのイテレータは、セットを要素の昇順でトラバースします。

クラス構成

SortedSet インタフェースは、自然順序や Comparator などによって順序づけられた Set です。

final SortedSet<String> sortedSet = new TreeSet<>();
sortedSet.add("ccc");
sortedSet.add("ddd");
sortedSet.add("aaa");
sortedSet.add("bbb");

// 要素の順番は自然順序でソートされます。
System.out.println(sortedSet); // [aaa, bbb, ccc, ddd]

final var hashSet = new HashSet<String>();
hashSet.add("ccc");
hashSet.add("ddd");
hashSet.add("aaa");
hashSet.add("bbb");

// 要素の順番は保持されません。
System.out.println(hashSet); // [aaa, ccc, bbb, ddd]

メソッド

default void addFirst (E e)

UnsupportedOperationExceptionをスローします。

final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    set.addFirst("aaa");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

default void addLast (E e)

UnsupportedOperationExceptionをスローします。

final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    set.addLast("aaa");
} catch (UnsupportedOperationException e) {
    System.out.println("UnsupportedOperationException!");
}

// 結果
// ↓
//UnsupportedOperationException!

Comparator<? super E> comparator ()

このセットの要素の順序付けに使用されるコンパレータを返します。このセットが要素の「自然順序付け」を使用する場合はnullを返します。

final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

final var comparator = set.comparator();
System.out.println(comparator); // null
final SortedSet<String> set = new TreeSet<>(Comparator.reverseOrder());
System.out.println(set); // []

final var comparator = set.comparator();
System.out.println(Objects.equals(comparator, Comparator.reverseOrder())); // true
final SortedSet<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
System.out.println(set); // []

final var comparator = set.comparator();
System.out.println(Objects.equals(comparator, String.CASE_INSENSITIVE_ORDER)); // true

E first ()

セット内に現在ある最初(下端)の要素を返します。

final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

set.add("b");

System.out.println(set); // [b]
System.out.println(set.first()); // b

set.add("c");

System.out.println(set); // [b, c]
System.out.println(set.first()); // b

set.add("a");

System.out.println(set); // [a, b, c]
System.out.println(set.first()); // a
final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    set.first();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// 結果
// ↓
//NoSuchElementException!

default E getFirst ()

このコレクションの最初の要素を取得します。

このメソッドは first() と同等です。
使用例はそちらをご参照ください。

default E getLast ()

このコレクションの最後の要素を取得します。

このメソッドは last() と同等です。
使用例はそちらをご参照ください。

SortedSet<E> headSet (E toElement)

このセットの要素がtoElementより厳密に小さい部分のビューを返します。

final SortedSet<String> set = new TreeSet<>();
set.add("x");
set.add("y");
set.add("z");

System.out.println(set); // [x, y, z]

final var headSet = set.headSet("z");
System.out.println(headSet); // [x, y]

set.add("a");

System.out.println(set); // [a, x, y, z]
System.out.println(headSet); // [a, x, y]

headSet.remove("x");

System.out.println(set); // [a, y, z]
System.out.println(headSet); // [a, y]
final SortedSet<String> set = new TreeSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]

System.out.println(set.headSet("a")); // []
System.out.println(set.headSet("b")); // [a]
System.out.println(set.headSet("c")); // [a, b]
System.out.println(set.headSet("d")); // [a, b, c]

E last ()

セット内に現在ある最後(上端)の要素を返します。

final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

set.add("b");

System.out.println(set); // [b]
System.out.println(set.last()); // b

set.add("a");

System.out.println(set); // [a, b]
System.out.println(set.last()); // b

set.add("c");

System.out.println(set); // [a, b, c]
System.out.println(set.last()); // c
final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    set.last();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// 結果
// ↓
//NoSuchElementException!

default E removeFirst ()

このコレクションの最初の要素 (オプションの操作)を削除して返します。

final SortedSet<String> set = new TreeSet<>();

set.add("aaa");
set.add("bbb");
set.add("ccc");

System.out.println(set); // [aaa, bbb, ccc]

System.out.println(set.removeFirst()); // aaa
System.out.println(set); // [bbb, ccc]

System.out.println(set.removeFirst()); // bbb
System.out.println(set); // [ccc]

System.out.println(set.removeFirst()); // ccc
System.out.println(set); // []
final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    final var ret = set.removeFirst();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// 結果
// ↓
//NoSuchElementException!

default E removeLast ()

このコレクションの最後の要素 (オプションの操作)を削除して返します。

final SortedSet<String> set = new TreeSet<>();

set.add("aaa");
set.add("bbb");
set.add("ccc");

System.out.println(set); // [aaa, bbb, ccc]

System.out.println(set.removeLast()); // ccc
System.out.println(set); // [aaa, bbb]

System.out.println(set.removeLast()); // bbb
System.out.println(set); // [aaa]

System.out.println(set.removeLast()); // aaa
System.out.println(set); // []
final SortedSet<String> set = new TreeSet<>();
System.out.println(set); // []

try {
    final var ret = set.removeLast();
} catch (NoSuchElementException e) {
    System.out.println("NoSuchElementException!");
}

// 結果
// ↓
//NoSuchElementException!

default SortedSet<E> reversed ()

このコレクションの逆順viewを返します。

final SortedSet<String> set = new TreeSet<>();

set.add("aaa");
set.add("bbb");
set.add("ccc");

System.out.println(set); // [aaa, bbb, ccc]

final var reversedSet = set.reversed();
System.out.println(reversedSet); // [ccc, bbb, aaa]

System.out.println(reversedSet.reversed()); // [aaa, bbb, ccc]

default Spliterator<E> spliterator ()

このソート・セット内の要素に対するSpliteratorを作成します。

final SortedSet<String> set = new TreeSet<>();
set.add("aaa");
set.add("bbb");
set.add("ccc");

System.out.println(set); // [aaa, bbb, ccc]

final var spliterator = set.spliterator();

System.out.println("-- forEachRemaining --");
spliterator.forEachRemaining(s -> {
    System.out.println(s);
});

// 結果
// ↓
//-- forEachRemaining --
//aaa
//bbb
//ccc

SortedSet<E> subSet (E fromElement, E toElement)

このセットの要素の範囲がfromElement、包含的、排他的、toElementである部分のビューを返します。

final SortedSet<String> set = new TreeSet<>();
set.add("x");
set.add("y");
set.add("z");

System.out.println(set); // [x, y, z]

final var subSet = set.subSet("a", "z");
System.out.println(subSet); // [x, y]

set.add("a");

System.out.println(set); // [a, x, y, z]
System.out.println(subSet); // [a, x, y]

subSet.remove("x");

System.out.println(set); // [a, y, z]
System.out.println(subSet); // [a, y]
final SortedSet<String> set = new TreeSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]

System.out.println(set.subSet("a", "a")); // []
System.out.println(set.subSet("a", "b")); // [a]
System.out.println(set.subSet("a", "c")); // [a, b]
System.out.println(set.subSet("a", "d")); // [a, b, c]

System.out.println(set.subSet("a", "d")); // [a, b, c]
System.out.println(set.subSet("b", "d")); // [b, c]
System.out.println(set.subSet("c", "d")); // [c]
System.out.println(set.subSet("d", "d")); // []

SortedSet<E> tailSet (E fromElement)

要素がfromElement以上である、このセットの一部のビューを返します。

final SortedSet<String> set = new TreeSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]

final var tailSet = set.tailSet("b");
System.out.println(tailSet); // [b, c]

set.add("d");

System.out.println(set); // [a, b, c, d]
System.out.println(tailSet); // [b, c, d]

tailSet.remove("b");

System.out.println(set); // [a, c, d]
System.out.println(tailSet); // [c, d]
final SortedSet<String> set = new TreeSet<>();
set.add("a");
set.add("b");
set.add("c");

System.out.println(set); // [a, b, c]

System.out.println(set.tailSet("a")); // [a, b, c]
System.out.println(set.tailSet("b")); // [b, c]
System.out.println(set.tailSet("c")); // [c]
System.out.println(set.tailSet("d")); // []

Collectionで宣言されたメソッド

parallelStream, removeIf, stream, toArray

Java API 使用例 : Collection」をご参照ください。

Iterableで宣言されたメソッド

forEach

Java API 使用例 : Iterable」をご参照ください。

Setで宣言されたメソッド

add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray

Java API 使用例 : Set」をご参照ください。


関連記事

ページの先頭へ