コードはこんな感じ。
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<Integer>();
for (int i = 1; i < 10; i++) {
treeSet.add((int) Math.pow(2, i));
}
//[2, 4, 8, 16, 32, 64, 128, 256, 512]
System.out.println("floor 10 -> " + treeSet.floor(10));
System.out.println("floor 20 -> " + treeSet.floor(20));
System.out.println("floor 64 -> " + treeSet.floor(64));
System.out.println("ceiling 10 -> " + treeSet.ceiling(10));
System.out.println("ceiling 20 -> " + treeSet.ceiling(20));
System.out.println("ceiling 64 -> " + treeSet.ceiling(64));
}
TreeSet<Integer> treeSet = new TreeSet<Integer>();
for (int i = 1; i < 10; i++) {
treeSet.add((int) Math.pow(2, i));
}
//[2, 4, 8, 16, 32, 64, 128, 256, 512]
System.out.println("floor 10 -> " + treeSet.floor(10));
System.out.println("floor 20 -> " + treeSet.floor(20));
System.out.println("floor 64 -> " + treeSet.floor(64));
System.out.println("ceiling 10 -> " + treeSet.ceiling(10));
System.out.println("ceiling 20 -> " + treeSet.ceiling(20));
System.out.println("ceiling 64 -> " + treeSet.ceiling(64));
}
■結果
floor 10 -> 8
floor 20 -> 16
floor 64 -> 64
ceiling 10 -> 16
ceiling 20 -> 32
ceiling 64 -> 64
floor 20 -> 16
floor 64 -> 64
ceiling 10 -> 16
ceiling 20 -> 32
ceiling 64 -> 64
TreeSet<T>なんて、ソートしてくれるだけじゃ?と思っていたら大間違いでした。。。
これ以外にも
- 指定数未満の集合を得る:headSet(E toElement)
- 指定数より大きい値の集合を得る:tailSet(E fromElement)
- 指定数以上、指定数未満の集合を得る:subSet(E fromElement, E toElement)
など、便利そうなやつが結構ある。
ほかのコレクションクラスのリファレンスも改めて見直ししたくなりました。
0 件のコメント:
コメントを投稿