TreeSet
Sun, Oct 2, 2022
閱讀時間 1 分鐘
TreeSet
TreeSet使用是紅黑樹。
自訂排序
Set
treeSet = new TreeSet<>(Comparator.comparing(String::length));
Set<Integer> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
Iterator<Integer> itr = treeSet.iterator();
// Iterator<String> itr = treeSet.descendingIterator(); // 降冪
while (itr.hasNext()) {
log.info(itr.next());
}
.first() => 返回第一個元素, last() => 返回最後一個元素
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
treeSet.add(4);
treeSet.add(5);
assertEquals(1, treeSet.first());
assertEquals(5, treeSet.last());
subSet(fromKey, toKey) => fromElement 到 toElement的元素 (跟 substring 一樣 包頭不包尾)
SortedSet<Integer> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
treeSet.add(4);
treeSet.add(5);
treeSet.add(6);
Set<Integer> expectedSet = new TreeSet<>();
expectedSet.add(2);
expectedSet.add(3);
expectedSet.add(4);
expectedSet.add(5);
assertEquals(expectedSet, treeSet.subSet(2, 6));
headSet() => 返回小於指定 key 的 element, tailSet() => 返回大於等於指定 key 的 element
SortedSet<Integer> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
treeSet.add(4);
treeSet.add(5);
treeSet.add(6);
System.out.println(treeSet.headSet(6)); // [1, 2, 3, 4, 5]
System.out.println(treeSet.tailSet(3)); // [3, 4, 5, 6]
System.out.println( treeSet.subSet(3, 7)); // [3, 4, 5, 6]
assertEquals(treeSet.headSet(6), treeSet.subSet(1, 6));
assertEquals(treeSet.tailSet(3), treeSet.subSet(3, 7));
issue:
LC issue