JavaのNavigableSet
Javaでは、 ナビゲート可能セット のサブタイプです ソートセット インタフェース。これにより、特定の要素の降順反復で最も近い一致を取得するなど、さまざまな操作を実行できます。これは、セット内の要素間を移動するためのメソッドを提供します。
例えば NavigableSet インターフェイスを使用すると、昇順のみをサポートする SortedSet とは異なり、セット内を昇順と降順の両方でナビゲートできます。 NavigableSet インターフェイスを実装するクラスは次のとおりです。 ツリーセット そして 同時スキップリストセット
- NavigableSet は SortedSet を拡張するため、first() last() headSet() tailSet() などのメソッドを提供します。
- 昇順と降順の両方向にナビゲートできます。
- NavigableSet の最も一般的な実装は TreeSet です。
例: この例では、TreeSet を使用して NavigableSet を作成し、そこに要素を追加して自動的に昇順に並べ替える方法を示します。
Java // Java program to demonstrates // the working of NavigableSet import java.util.* ; public class Geeks { public static void main ( String [] args ) { NavigableSet < Integer > ns = new TreeSet <> (); // Add elements to the set ns . add ( 10 ); ns . add ( 20 ); ns . add ( 30 ); ns . add ( 40 ); ns . add ( 50 ); System . out . println ( 'Navigable Set: ' + ns ); } }
出力
Navigable Set: [10 20 30 40 50]
以下の図は、セットに関連する Java のコレクション フレームワークの継承構造を示しています。
TreeSet は以下を実装するクラスです。 ナビゲート可能セット これは SortedSet を拡張します。 セット 。
NavigableSet の宣言
Java では、NavigableSet の宣言は次のように宣言できます。
ナビゲート可能セット
セット名;
注記: ' Type' はセット内の要素のタイプ (整数 String など) で、setName は変数の名前です。
NavigableSet オブジェクトの作成
NavigableSet はインターフェイスであるため、直接作成することはできません。代わりに次のようなクラスを使用します ツリーセット それを実装するものです。ジェネリックの助けを借りて、セットが格納するオブジェクトのタイプを定義できます。このタイプセーフなセットは次のように定義できます。
ナビゲート可能セット
set = 新しいツリーセット ();
例: この例では、descedingSet()、tailSet()、 lower()、pollFirst()、pollLast() などの NavigableSet のさまざまなメソッドを使用して、ソートされたセットを通常の順序と逆の順序の両方で操作およびナビゲートする方法を示します。
Java // Java Program to demostrates the // working of various methods of NavigableSet import java.util.NavigableSet ; import java.util.TreeSet ; public class Geeks { public static void main ( String [] args ) { NavigableSet < Integer > ns = new TreeSet <> (); ns . add ( 0 ); ns . add ( 1 ); ns . add ( 2 ); ns . add ( 3 ); ns . add ( 4 ); ns . add ( 5 ); ns . add ( 6 ); // Get a reverse view of the navigable set NavigableSet < Integer > revNs = ns . descendingSet (); // Print the normal and reverse views System . out . println ( 'Normal order: ' + ns ); System . out . println ( 'Reverse order: ' + revNs ); NavigableSet < Integer > t = ns . tailSet ( 3 true ); System . out . println ( '3 or more: ' + t ); System . out . println ( 'lower(3): ' + ns . lower ( 3 )); System . out . println ( 'floor(3): ' + ns . floor ( 3 )); System . out . println ( 'higher(3): ' + ns . higher ( 3 )); System . out . println ( 'ceiling(3): ' + ns . ceiling ( 3 )); System . out . println ( 'pollFirst(): ' + ns . pollFirst ()); System . out . println ( 'Navigable Set: ' + ns ); System . out . println ( 'pollLast(): ' + ns . pollLast ()); System . out . println ( 'Navigable Set: ' + ns ); System . out . println ( 'pollFirst(): ' + ns . pollFirst ()); System . out . println ( 'Navigable Set: ' + ns ); System . out . println ( 'pollFirst(): ' + ns . pollFirst ()); System . out . println ( 'Navigable Set: ' + ns ); System . out . println ( 'pollFirst(): ' + ns . pollFirst ()); System . out . println ( 'Navigable Set: ' + ns ); System . out . println ( 'pollFirst(): ' + ns . pollFirst ()); System . out . println ( 'pollLast(): ' + ns . pollLast ()); } }
出力:
NavigableSet でのさまざまな操作の実行
1. 要素の追加: 使用できます 追加() NavigableSet に要素を挿入するメソッド。要素はソートされた順序で格納されます。重複は許可されず、Null 値も NavigableSet では受け入れられません。
例: この例では、add() を使用して要素を NavigableSet に追加する方法を示します。重複は無視され、要素は昇順で並べ替えられます。
Java // Java Program to demonstrates the working of add() import java.util.* ; import java.io.* ; class Geeks { public static void main ( String [] args ) { NavigableSet < String > ts = new TreeSet < String > (); // Elements are added using add() method ts . add ( 'A' ); ts . add ( 'B' ); ts . add ( 'C' ); ts . add ( 'A' ); System . out . println ( 'NavigableSet: ' + ts ); } }
出力
NavigableSet: [A B C]
2. 要素へのアクセス: 要素を追加した後、要素にアクセスしたい場合は、次のような組み込みメソッドを使用できます。 を含む() 初め() 最後() 等
例: この例では、NavigableSet に要素を追加し、要素の存在を確認し、最初と最後の要素を取得する方法を示します。
Java // Java program to demonstrates the // working of contains() first() and last() method import java.util.* ; import java.io.* ; class Geeks { public static void main ( String [] args ) { NavigableSet < String > ts = new TreeSet < String > (); // Elements are added using add() method ts . add ( 'A' ); ts . add ( 'B' ); ts . add ( 'C' ); ts . add ( 'A' ); System . out . println ( 'NavigableSet: ' + ts ); String s = 'D' ; // Check if the above string exists in // the NavigableSet or not System . out . println ( 'D exists in the NavigableSet?: ' + ts . contains ( s )); // Print the first element in // the NavigableSet System . out . println ( 'First Element of NavigableSet: ' + ts . first ()); // Print the last element in // the NavigableSet System . out . println ( 'Last Element of NavigableSet: ' + ts . last ()); } }
出力
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. 要素の削除: 値は、次を使用して NavigableSet から削除できます。 取り除く() ポールファースト() ポールラスト() 。
例: この例では、NavigableSet から要素を削除する方法を示します。
Java // Java Program to demonstrates the working of remove() // pollFirst() and pollLast() method import java.io.* ; import java.util.* ; class Geeks { public static void main ( String [] args ) { NavigableSet < String > ts = new TreeSet < String > (); // Elements are added using add() method ts . add ( 'A' ); ts . add ( 'B' ); ts . add ( 'C' ); ts . add ( 'B' ); ts . add ( 'D' ); ts . add ( 'E' ); System . out . println ( 'NavigableSet: ' + ts ); // Removing the element b ts . remove ( 'B' ); System . out . println ( 'After removing element ' + ts ); // Remove the First element of TreeSet ts . pollFirst (); System . out . println ( 'After the removal of First Element ' + ts ); // Remove the Last element of TreeSet ts . pollLast (); System . out . println ( 'After the removal of Last Element ' + ts ); } }
出力
NavigableSet: [A B C D E] After removing element [A C D E] After the removal of First Element [C D E] After the removal of Last Element [C D]
4. 要素の反復: NavigableSet を反復するにはさまざまな方法があります。最も有名なのは、 for ループが強化されました。
例: この例では、NavigableSet に要素を追加し、それを昇順で反復処理する方法を示します。
Java // Java Program to iterate through NavigableSet import java.util.* ; import java.io.* ; class Geeks { public static void main ( String [] args ) { NavigableSet < String > ts = new TreeSet < String > (); // Elements are added using add() method ts . add ( 'C' ); ts . add ( 'D' ); ts . add ( 'E' ); ts . add ( 'A' ); ts . add ( 'B' ); ts . add ( 'Z' ); // Iterating though the NavigableSet for ( String i : ts ) System . out . print ( i + ' ' ); } }
出力
A B C D E Z
メソッド
NavigableSet インターフェイスに存在するメソッドは次のとおりです。
| メソッド | 説明 |
|---|---|
| 天井(E e) | このセット内の指定された要素以上の最小の要素を返します。そのような要素が存在しない場合は null を返します。 |
| 降順イテレータ() | このセット内の要素の反復子を降順で返します。 |
| 降順セット() | このセットに含まれる要素の逆順ビューを返します。 |
| 床(E e) | このセット内の指定された要素以下の最大の要素を返します。そのような要素が存在しない場合は null を返します。 |
| headSet(E toElement) | このセットのうち、要素が厳密に toElement より小さい部分のビューを返します。 |
| headSet(E toElement ブール値を含む) | このセットのうち、要素が toElement より小さい (または inclusive が true の場合は等しい) 部分のビューを返します。 |
| より高い(E e) | このセット内の指定された要素より厳密に大きい最小の要素を返します。そのような要素が存在しない場合は null を返します。 |
| イテレータ() | このセット内の要素の反復子を昇順で返します。 |
| 下(E e) | 指定された要素より厳密に小さい、このセット内の最大の要素を返します。そのような要素が存在しない場合は null を返します。 |
| ポールファースト() | 最初 (最下位) の要素を取得して削除するか、このセットが空の場合は null を返します。 |
| ポールラスト() | 最後の (最上位の) 要素を取得して削除するか、このセットが空の場合は null を返します。 |
| subSet(E fromElement ブール値 fromInclusive E toElement ブール値 toInclusive) | このセットの要素が fromElement から toElement までの範囲にある部分のビューを返します。 |
| subSet(E fromElement E toElement) | このセットの要素の範囲が fromElement から toElement までの範囲にある部分のビューを返します。 |
| tailSet(E fromElement) | このセットの要素が fromElement 以上である部分のビューを返します。 |
| tailSet(E fromElement ブール値を含む) | このセットのうち、要素が fromElement より大きい (または、包括的が true の場合は等しい) 部分のビューを返します。 |
インタフェース java.util.SortedSet から継承されたメソッド
| 方法 | 説明 |
|---|---|
| コンパレータ() | このメソッドは、このセット内の要素の順序付けに使用されるコンパレータを返します。このセットが要素の自然な順序付けを使用している場合は null を返します。 |
| 初め() | このメソッドは、このセットに存在する最初 (最下位) の要素を返します。 |
| 最後() | このメソッドは、セット内に存在する最後の (最上位の) 要素を返します。 |
| スプリッテレータ() | このソートされたセット内の要素に対して Spliterator を作成します。 |
インタフェース java.util.Set から継承されたメソッド
| 方法 | 説明 |
|---|---|
| 追加(要素) | このメソッドは、特定の要素をセットに追加するために使用されます。この関数は、指定された要素がセット内に存在しない場合にのみ要素を追加します。要素がセット内に既に存在する場合、関数は False を返します。 |
| すべて追加(コレクション) | このメソッドは、言及されたコレクションのすべての要素を既存のセットに追加するために使用されます。要素は特定の順序に従わずにランダムに追加されます。 |
| クリア() | このメソッドは、セットからすべての要素を削除するために使用されますが、セットは削除されません。このセットの参照はまだ存在します。 |
| 含む(要素) | このメソッドは、特定の要素が Set に存在するかどうかを確認するために使用されます。 |
| すべてを含む(コレクション) | このメソッドは、指定されたコレクションに存在するすべての要素がセットに含まれているかどうかを確認するために使用されます。 このメソッドは、セットにすべての要素が含まれている場合は true を返し、要素のいずれかが欠落している場合は false を返します。 |
| 等しい() | 指定されたオブジェクトとこのセットが等しいかどうかを比較します。 |
| ハッシュコード() | このメソッドは、Set のこのインスタンスの hashCode 値を取得するために使用されます。 Set のこのインスタンスの hashCode 値である整数値を返します。 |
| isEmpty() | このメソッドは、NavigableSet が空かどうかを確認するために使用されます。 |
| 削除(要素) | このメソッドは、セットから指定された要素を削除するために使用されます。このメソッドは、指定された要素が Set 内に存在する場合は True を返し、それ以外の場合は False を返します。 |
| すべて削除(コレクション) | このメソッドは、セット内に存在するすべての要素をコレクションから削除するために使用されます。呼び出しの結果としてこのセットが変更された場合、このメソッドは true を返します。 |
| すべて保持(コレクション) | このメソッドは、指定されたコレクションで言及されているセットのすべての要素を保持するために使用されます。呼び出しの結果としてこのセットが変更された場合、このメソッドは true を返します。 |
| サイズ() | このメソッドはセットのサイズを取得するために使用されます。これは、要素の数を示す整数値を返します。 |
| toArray() | このメソッドは、Set と同じ要素の配列を形成するために使用されます。 |
| toArray(T[] a) | このセット内のすべての要素を含む配列を返します。返される配列のランタイム型は、指定された配列のランタイム型です。 |
インタフェース java.util.Collection で宣言されたメソッド
| 方法 | 説明 |
|---|---|
| パラレルストリーム() | このコレクションをソースとして持つ、並列可能な Stream を返します。 |
| RemoveIf(述語 super E>フィルター) | 指定された述語を満たすこのコレクションの要素をすべて削除します。 |
| ストリーム() | このコレクションをソースとして含む連続した Stream を返します。 |
| toArray?(IntFunction | 提供されたジェネレーター関数を使用して、このコレクション内のすべての要素を含む配列を返し、返された配列を割り当てます。 |
インターフェース java.lang.Iterable で宣言されたメソッド
| 方法 | 説明 |
|---|---|
| forEach(消費者 super T>アクション) | すべての要素が処理されるか、アクションが例外をスローするまで、Iterable の各要素に対して指定されたアクションを実行します。 |