広告

Java : ConcurrentSkipListSet (並列処理用セット) - API使用例

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


概要

ConcurrentSkipListMapに基づくスケーラブルな並行NavigableSet実装です。 セットの要素は、どのコンストラクタが使用されているかに応じて、その自然順序付けに従って、またはセット作成時に提供されるComparatorによってソートされます。

クラス構成

ConcurrentSkipListSet クラスは、反復処理 (例えば for-eachループ文) 中に addremove などによる変更を許容する Set の実装です。
非チェック例外の ConcurrentModificationException が発生しないことが保証されています。

汎用コレクションの TreeSet に相当します。

void test(Set<String> set) throws InterruptedException {
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("d");
    set.add("e");

    try (final var executor = Executors.newSingleThreadScheduledExecutor()) {

        executor.schedule(() -> {
            System.out.println("-- add value! --");
            set.add("x");
        }, 5, TimeUnit.SECONDS);

        try {
            for (final var value : set) {
                System.out.println("value = " + value);
                TimeUnit.SECONDS.sleep(2);
            }
        } catch (ConcurrentModificationException e) {
            System.out.println("ConcurrentModificationException!");
        }
    }

    System.out.println("-- end --");
    System.out.println("set = " + set);
}
test(new TreeSet<>());

// 結果
// ↓
//value = a
//value = b
//value = c
//-- add value! --
//ConcurrentModificationException!
//-- end --
//set = [a, b, c, d, e, x]

test(new ConcurrentSkipListSet<>());

// 結果
// ↓
//value = a
//value = b
//value = c
//-- add value! --
//value = d
//value = e
//value = x
//-- end --
//set = [a, b, c, d, e, x]
final var navigableSet = new ConcurrentSkipListSet<String>();
navigableSet.add("ccc");
navigableSet.add("ddd");
navigableSet.add("aaa");
navigableSet.add("bbb");

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

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

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

コンストラクタ

ConcurrentSkipListSet ()

自然順序付けに従って要素を順序付けする、新しい空のセットを作成します。

final var set = new ConcurrentSkipListSet<String>();
System.out.println(set); // []
System.out.println(set.isEmpty()); // true

set.add("b");
set.add("a");
set.add("c");

System.out.println(set); // [a, b, c]
System.out.println(set.size()); // 3
final var set = new ConcurrentSkipListSet<Integer>();

set.add(100);
set.add(999);
set.add(-200);

System.out.println(set); // [-200, 100, 999]

ConcurrentSkipListSet (Collection<? extends E> c)

指定されたコレクション内の要素を持ち、要素をその自然順序付けに従って順序付けする新しいセットを作成します。

final var c = List.of("b", "a", "c");

final var set = new ConcurrentSkipListSet<>(c);
System.out.println(set); // [a, b, c]
System.out.println(set.size()); // 3

ConcurrentSkipListSet (Comparator<? super E> comparator)

指定されたコンパレータに従って要素の順序付けを行う、新しい空のセットを作成します。

final var src = List.of("bbb", "aaa", "ccc");

final var set1 = new ConcurrentSkipListSet<String>();
set1.addAll(src);
System.out.println(set1); // [aaa, bbb, ccc]

final var set2 = new ConcurrentSkipListSet<String>(Comparator.reverseOrder());
set2.addAll(src);
System.out.println(set2); // [ccc, bbb, aaa]

ConcurrentSkipListSet (SortedSet<E> s)

指定されたソート・セットと同じ要素を持ち、同じ順序付けを使用する、新しいセットを作成します。

final var s = new ConcurrentSkipListSet<String>(Comparator.reverseOrder());
s.add("a");
s.add("b");
s.add("c");

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

final var set = new ConcurrentSkipListSet<>(s);
System.out.println(set); // [c, b, a]
System.out.println(set.size()); // 3

メソッド

boolean add (E e)

指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。

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

System.out.println(set.add("a")); // true
System.out.println(set); // [a]

System.out.println(set.add("b")); // true
System.out.println(set); // [a, b]

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

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

E ceiling (E e)

このセット内で、指定された要素と等しいかそれよりも大きい要素の中で最小のものを返します。そのような要素が存在しない場合はnullを返します。

final var set = new ConcurrentSkipListSet<String>();
set.add("b");
set.add("d");
set.add("f");

System.out.println(set); // [b, d, f]

System.out.println(set.ceiling("a")); // b
System.out.println(set.ceiling("b")); // b
System.out.println(set.ceiling("c")); // d
System.out.println(set.ceiling("d")); // d
System.out.println(set.ceiling("e")); // f
System.out.println(set.ceiling("f")); // f
System.out.println(set.ceiling("g")); // null

void clear ()

すべての要素をセットから削除します。

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

set.add("a");
System.out.println(set); // [a]

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

set.clear();
System.out.println(set); // []

ConcurrentSkipListSet<E> clone ()

ConcurrentSkipListSetのインスタンスのシャロー・コピーを返します。

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

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

final var cloned = set.clone();
System.out.println(cloned); // [a, b, c]
System.out.println(cloned.getClass()); // class java.util.concurrent.ConcurrentSkipListSet

Comparator<? super E> comparator ()

このセット内の要素を順序付けするために使うコンパレータを返します。ただし、このセットがその要素の自然順序付けを使う場合はnullを返します。

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

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

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

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

boolean contains (Object o)

指定された要素がセットに含まれている場合にtrueを返します。

final var set = new ConcurrentSkipListSet<String>();
Collections.addAll(set, "a", "b", "c");
System.out.println(set); // [a, b, c]

System.out.println(set.contains("")); // false
System.out.println(set.contains("a")); // true
System.out.println(set.contains("b")); // true
System.out.println(set.contains("c")); // true

System.out.println(set.contains("X")); // false
System.out.println(set.contains("abc")); // false

Iterator<E> descendingIterator ()

このセットの要素のイテレータを降順で返します。

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

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

final var iterator = set.descendingIterator();

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

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

NavigableSet<E> descendingSet ()

このセットに含まれる要素の逆順のビューを返します。

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

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

final var descSet = set.descendingSet();
System.out.println(descSet); // [c, b, a]

set.add("d");

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

descSet.remove("b");

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

boolean equals (Object o)

指定されたオブジェクトがセットと同じかどうかを比較します。

final var set = new ConcurrentSkipListSet<String>();
Collections.addAll(set, "a", "b", "c");
System.out.println(set); // [a, b, c]

System.out.println(set.equals(Set.of("a"))); // false
System.out.println(set.equals(Set.of("a", "b"))); // false
System.out.println(set.equals(Set.of("a", "b", "c"))); // true
System.out.println(set.equals(Set.of("c", "b", "a"))); // true
final var set = new ConcurrentSkipListSet<String>();
Collections.addAll(set, "a", "b", "c");
System.out.println(set); // [a, b, c]

final var hashSet = new HashSet<>(set);
System.out.println(hashSet); // [a, b, c]
System.out.println(set.equals(hashSet)); // true

final var treeSet = new TreeSet<>(set);
System.out.println(treeSet); // [a, b, c]
System.out.println(set.equals(treeSet)); // true

// Set以外はfalse
final var list = new ArrayList<>(set);
System.out.println(list); // [a, b, c]
System.out.println(set.equals(list)); // false

E first ()

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

final var set = new ConcurrentSkipListSet<String>();
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 var set = new ConcurrentSkipListSet<String>();
System.out.println(set); // []

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

// 結果
// ↓
//NoSuchElementException!

E floor (E e)

このセット内で、指定された要素と等しいかそれよりも小さい要素の中で最大のものを返します。そのような要素が存在しない場合はnullを返します。

final var set = new ConcurrentSkipListSet<String>();
set.add("b");
set.add("d");
set.add("f");

System.out.println(set); // [b, d, f]

System.out.println(set.floor("a")); // null
System.out.println(set.floor("b")); // b
System.out.println(set.floor("c")); // b
System.out.println(set.floor("d")); // d
System.out.println(set.floor("e")); // d
System.out.println(set.floor("f")); // f
System.out.println(set.floor("g")); // f

NavigableSet<E> headSet (E toElement)

このセットのtoElementよりも確実に小さい要素を持つ部分のビューを返します。

final var set = new ConcurrentSkipListSet<String>();
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 var set = new ConcurrentSkipListSet<String>();
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]

NavigableSet<E> headSet (E toElement, boolean inclusive)

このセットのtoElementよりも小さい要素(inclusiveがtrueの場合はそれよりも小さいかそれと等しい要素)を含む部分のビューを返します。

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

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

final var headSet = set.headSet("y", true);
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 var set = new ConcurrentSkipListSet<String>();
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("a", true)); // [a]

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

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

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

E higher (E e)

このセット内で、指定された要素よりも確実に大きい要素の中で最小のものを返します。そのような要素が存在しない場合はnullを返します。

final var set = new ConcurrentSkipListSet<String>();
set.add("b");
set.add("d");
set.add("f");

System.out.println(set); // [b, d, f]

System.out.println(set.higher("a")); // b
System.out.println(set.higher("b")); // d
System.out.println(set.higher("c")); // d
System.out.println(set.higher("d")); // f
System.out.println(set.higher("e")); // f
System.out.println(set.higher("f")); // null
System.out.println(set.higher("g")); // null

boolean isEmpty ()

このセットに要素が1つも含まれていない場合にtrueを返します。

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

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

set.clear();
System.out.println(set); // []
System.out.println(set.isEmpty()); // true

Iterator<E> iterator ()

このセットの要素のイテレータを昇順で返します。

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

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

final var iterator = set.iterator();

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

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

E last ()

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

final var set = new ConcurrentSkipListSet<String>();
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 var set = new ConcurrentSkipListSet<String>();
System.out.println(set); // []

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

// 結果
// ↓
//NoSuchElementException!

E lower (E e)

このセット内で、指定された要素よりも確実に小さい要素の中で最大のものを返します。そのような要素が存在しない場合はnullを返します。

final var set = new ConcurrentSkipListSet<String>();
set.add("b");
set.add("d");
set.add("f");

System.out.println(set); // [b, d, f]

System.out.println(set.lower("a")); // null
System.out.println(set.lower("b")); // null
System.out.println(set.lower("c")); // b
System.out.println(set.lower("d")); // b
System.out.println(set.lower("e")); // d
System.out.println(set.lower("f")); // d
System.out.println(set.lower("g")); // f

E pollFirst ()

最初(下端)の要素を取得して削除します。このセットが空の場合はnullを返します。

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

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

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

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

System.out.println(set.pollFirst()); // c
System.out.println(set); // []

System.out.println(set.pollFirst()); // null

E pollLast ()

最後(上端)の要素を取得して削除します。このセットが空の場合はnullを返します。

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

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

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

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

System.out.println(set.pollLast()); // a
System.out.println(set); // []

System.out.println(set.pollLast()); // null

boolean remove (Object o)

指定された要素がこのセットに存在する場合に、要素をセットから削除します。

final var src = Set.of("a", "b", "c");

{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("")); // false
    System.out.println(set); // [a, b, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("a")); // true
    System.out.println(set); // [b, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("b")); // true
    System.out.println(set); // [a, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.remove("X")); // false
    System.out.println(set); // [a, b, c]
}

boolean removeAll (Collection<?> c)

セットから、指定されたコレクション内に保持されているすべての要素を削除します。

final var src = Set.of("a", "b", "c");

{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of())); // false
    System.out.println(set); // [a, b, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a"))); // true
    System.out.println(set); // [b, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "b"))); // true
    System.out.println(set); // [c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("b", "a"))); // true
    System.out.println(set); // [c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "b", "c"))); // true
    System.out.println(set); // []
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("X", "Y"))); // false
    System.out.println(set); // [a, b, c]
}
{
    final var set = new ConcurrentSkipListSet<>(src);
    System.out.println(set); // [a, b, c]

    System.out.println(set.removeAll(Set.of("a", "X"))); // true
    System.out.println(set); // [b, c]
}

int size ()

このセット中の要素の数を返します。

final var set1 = new ConcurrentSkipListSet<String>();
System.out.println(set1); // []
System.out.println(set1.size()); // 0

final var set2 = new ConcurrentSkipListSet<String>();
Collections.addAll(set2, "a", "b", "c");
System.out.println(set2); // [a, b, c]
System.out.println(set2.size()); // 3

Spliterator<E> spliterator ()

このセット内の要素に対するSpliteratorを返します。

final var set = new ConcurrentSkipListSet<String>();
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

NavigableSet<E> subSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)

このセットのfromElement - toElementの要素範囲を持つ部分のビューを返します。

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

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

final var subSet = set.subSet("a", true, "y", true);
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 var set = new ConcurrentSkipListSet<String>();
set.add("a");
set.add("b");
set.add("c");

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

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

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

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

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

このセットのfromElement (これを含む) - toElement (これを含まない)の要素範囲を持つ部分のビューを返します。

final var set = new ConcurrentSkipListSet<String>();
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 var set = new ConcurrentSkipListSet<String>();
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")); // []

NavigableSet<E> tailSet (E fromElement)

このセットのfromElementに等しいかそれよりも大きい要素を持つ部分のビューを返します。

final var set = new ConcurrentSkipListSet<String>();
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 var set = new ConcurrentSkipListSet<String>();
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")); // []

NavigableSet<E> tailSet (E fromElement, boolean inclusive)

このセットのfromElementよりも大きい要素(inclusiveがtrueの場合はそれよりも大きいかそれと等しい要素)を含む部分のビューを返します。

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

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

final var tailSet = set.tailSet("a", false);
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 var set = new ConcurrentSkipListSet<String>();
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("a", false)); // [b, c]

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

System.out.println(set.tailSet("c")); // [c]
System.out.println(set.tailSet("c", false)); // []

AbstractSetで宣言されたメソッド

hashCode

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

AbstractCollectionで宣言されたメソッド

addAll, containsAll, retainAll, toArray, toArray, toString

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

Collectionで宣言されたメソッド

parallelStream, removeIf, stream, toArray

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

Iterableで宣言されたメソッド

forEach

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

Setで宣言されたメソッド

addAll, containsAll, hashCode, retainAll, toArray, toArray

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


関連記事

ページの先頭へ