Java NavigableSetインターフェースをマスター:ナビゲーション、ソート、実践例
Java NavigableSetインターフェース
Java CollectionsフレームワークのNavigableSetインターフェースとそのメソッドを、実例を交えて学習します。
NavigableSetは、セット内の要素間をナビゲートする機能を提供します。SortedSetの一種と見なされます。
NavigableSetを実装するクラス
NavigableSetの機能を利用するには、TreeSetクラスを使用します。TreeSetはNavigableSetを実装しています。
NavigableSetの使い方
JavaでNavigableSetを使用するには、java.util.NavigableSetパッケージをインポートします:
// TreeSetによるSortedSet実装
NavigableSet<String> numbers = new TreeSet<>();
ここでは、TreeSetクラスのNavigableSetであるnumbersを作成しています。
NavigableSetのメソッド
NavigableSetはSortedSetの一種と見なされます。なぜならNavigableSetはSortedSetインターフェースを拡張しているからです。したがって、すべてのSortedSetメソッドもNavigableSetで利用可能です。ただし、SortedSetの一部メソッド(headSet()、tailSet()、subSet())はNavigableSetで異なる定義になっています。
headSet(element, booleanValue)
headSet()メソッドは、指定されたelementより前のすべての要素を返します。booleanValueパラメータは省略可能で、デフォルトはfalseです。trueを指定すると、指定要素を含む要素が返されます。
tailSet(element, booleanValue)
tailSet()メソッドは、指定されたelement以降のすべての要素を返します(指定要素を含む)。booleanValueのデフォルトはtrueです。falseを指定すると、指定要素を含まない要素が返されます。
subSet(e1, bv1, e2, bv2)
subSet()メソッドは、e1とe2の間のすべての要素を返します(e1を含む)。bv1とbv2は省略可能で、それぞれデフォルトはtrueとfalseです。bv1にfalseを指定するとe1を含まず、bv2にtrueを指定するとe2を含みます。
ナビゲーション用メソッド
NavigableSetは要素をナビゲートするためのさまざまなメソッドを提供します:
- descendingSet() – 要素の順序を反転させます
- descendingIterator() – 逆順で反復処理するイテレータを返します
- ceiling() – 指定要素以上で最小の要素を返します
- floor() – 指定要素以下で最大の要素を返します
- higher() – 指定要素より大きい最小の要素を返します
- lower() – 指定要素より小さい最大の要素を返します
- pollFirst() – 最初の要素を取得して削除します
- pollLast() – 最後の要素を取得して削除します
TreeSetクラスでのNavigableSet実装
import java.util.NavigableSet;
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
// TreeSetを使用してNavigableSetを作成
NavigableSet<Integer> numbers = new TreeSet<>();
// 要素を挿入
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("NavigableSet: " + numbers);
// 最初の要素にアクセス
int firstElement = numbers.first();
System.out.println("最初の数値: " + firstElement);
// 最後の要素にアクセス
int lastElement = numbers.last();
System.out.println("最後の要素: " + lastElement);
// 最初の要素を削除
int number1 = numbers.pollFirst();
System.out.println("削除された最初の要素: " + number1);
// 最後の要素を削除
int number2 = numbers.pollLast();
System.out.println("削除された最後の要素: " + number2);
}
}
出力
NavigableSet: [1, 2, 3] 最初の数値: 1 最後の要素: 3 削除された最初の要素: 1 削除された最後の要素: 3
TreeSetの詳細については、Java TreeSetを参照してください。
NavigableSetインターフェースについて理解できたところで、TreeSetクラスを使用した実装について学びます。
Java
- C#インターフェイスをマスターする:定義、実装、実践的なユースケース
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java if…elseをマスター:制御フローを徹底解説
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaラムダ式完全ガイド:基礎からStream APIまで
- Java インターフェース vs 抽象クラス:適切な抽象化の選び方
- Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース
- Java 9プライベートインターフェースメソッド:カプセル化とコード再利用を強化