モジュール java.base
パッケージ java.util.concurrent

クラスConcurrentSkipListSet<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.concurrent.ConcurrentSkipListSet<E>
型パラメータ:
E - このセットで保持される要素の型
すべての実装されたインタフェース:
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, SequencedCollection<E>, SequencedSet<E>, Set<E>, SortedSet<E>

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

この実装は、containsadd、およびremoveオペレーションとそれらのバリアントに予想される平均log(n)時間コストを提供します。 挿入、削除、アクセスの各オペレーションは、複数のスレッドによって並行して、安全に実行されます。

イテレータおよびスプリッテレータは弱一貫性を持っています

昇順で並べられたビューとそのイテレータは、降順の場合よりも高速になります。

大半のコレクションとは異なり、sizeメソッドは一定時間のオペレーションではないことに留意してください。 これらのセットには非同期という特性があるため、現在の要素数を判定するには要素のトラバーサルが必要になります。そのため、このコレクションがトラバーサル中に変更された場合は、不正確な結果が報告される可能性があります。

AbstractCollection.addAll(java.util.Collection<? extends E>)Collection.removeIf(java.util.function.Predicate<? super E>)Iterable.forEach(java.util.function.Consumer<? super T>)など、複数の要素を追加、削除または検査するバルク操作は、原子的に実行される保証はありません。 たとえば、 addAll操作と並行するforEachトラバースでは、追加された要素の一部のみが監視される場合があります。

このクラスとそのイテレータは、SetおよびIteratorインタフェースのすべてのオプション・メソッドを実装します。 他のほとんどの並行処理コレクションの実装と同様、このクラスはnull要素の使用を許可しません。これは、nullの引数と戻り値は要素がない場合と確実に区別できないためです。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.6
関連項目: