java.util.NavigableSet。
なにこれと思ったらJava SE 6で追加されたものでした。
要素を取得するメソッド (Eは型)
* E higher(E e)
- 要素の中から e より大きい最小の値を返します。存在しない場合は null
* E ceiling(E e)
- 要素の中から e 以上の最小の値を返します。存在しない場合は null
* E floor(E e)
- 要素の中から e 以下の最大の値を返します。存在しない場合は null
* E lower(E e)
- 要素の中から e 未満の最大の値を返します。存在しない場合は null
* E pollFirst()
- 最小値を持つ要素を返すと同時に NavigableSet から削除します。NavigableSet が空の場合は null を返します
* E pollLast()
- 最大値を持つ要素を返すと同時に NavigableSet から削除します。NavigableSet が空の場合は null を返します
NavigableSet から新しい NavigableSet を作成するメソッド
* NavigableSet
- 順序付けが反対で同じ要素を持つ NavigableSet を返します
* NavigableSet
- toElement 以下(inclusive が true の場合)または toElement 未満(inclusive が false の場合)の値を含む NavigableSet を返します
* NavigableSet
- fromElement 以上(inclusive が true の場合)または fromElement 超過(inclusive が false の場合)の値を含む NavigableSet を返します
* NavigableSet
- fromElement 以上(fromInclusive が true)または fromElement 超過(fromInclusive が false)、なおかつ toElement 以下(toInclusive が true)または toElement 未満(toInclusive が false)の値を含む NavigableSet を返します
[java]
NavigableSet<Integer> navigableSet = new TreeSet<Integer>();
for(int i=0; i<10; i++){
navigableSet.add(i);
}
System.out.print("elements of NavigableSet: ");
System.out.println(navigableSet);
// 5 超過/以上/以下/未満の要素を取得.
System.out.println("higher(5) : " + navigableSet.higher(5));
System.out.println("ceiling(5) : " + navigableSet.ceiling(5));
System.out.println("floor(5) : " + navigableSet.floor(5));
System.out.println("lower(5) : " + navigableSet.lower(5));
// 最大・最小値の要素を取得後,削除
System.out.println("pollFirst() : " + navigableSet.pollFirst());
System.out.println("pollLast() : " + navigableSet.pollLast());
System.out.print("elements of NavigableSet: ");
System.out.println(navigableSet);
NavigableSet<Integer> descendingSet = navigableSet.descendingSet();
System.out.println(descendingSet);
NavigableSet<Integer> headSet = navigableSet.headSet(3, true);
System.out.println(headSet);
NavigableSet<Integer> tailSet = navigableSet.tailSet(3, false);
System.out.println(tailSet);
NavigableSet<Integer> subSet = navigableSet.subSet(3, true, 7, false);
System.out.println(subSet);
/*—– 出力 —–*/
elements of NavigableSet: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
higher(5) : 6
ceiling(5) : 5
floor(5) : 5
lower(5) : 4
pollFirst() : 0
pollLast() : 9
elements of NavigableSet: [1, 2, 3, 4, 5, 6, 7, 8]
[8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3]
[4, 5, 6, 7, 8]
[3, 4, 5, 6]
[/java]
目的の要素を探索するときに便利ですね。