Java TreeSet集合的higher()方法在递减模式下的行为?
当TreeSet集合按降序排序时,任何正文都可以描述它的higher()方法的这种行为: 代码:Java TreeSet集合的higher()方法在递减模式下的行为?,java,collections,Java,Collections,当TreeSet集合按降序排序时,任何正文都可以描述它的higher()方法的这种行为: 代码: NavigableSet<Integer> set = new TreeSet<>(); set.add(10); set.add(22); set.add(34); set.add(40); set.add(45); set.add(56); set.add(77); set.add(79); set.add(84); set.add(99); set = set.de
NavigableSet<Integer> set = new TreeSet<>();
set.add(10);
set.add(22);
set.add(34);
set.add(40);
set.add(45);
set.add(56);
set.add(77);
set.add(79);
set.add(84);
set.add(99);
set = set.descendingSet();
System.out.printf("%n Higher than 40 : %s", set.higher(40));
现在,虽然集合是按降序排序的,但仍然更高(40)
方法应该返回一个大于40的值(当然是45)还是不大于40?- :函数返回此集合中严格大于给定元素的最小元素,如果没有此类元素,则返回
null
- :返回此
集中包含的元素的相反顺序
视图
TreeSet
固有地使用TreeMap
来实现其功能。对downingset()
的调用最终会在TreeMap
实例上调用downingmap()
函数,从以下源代码可以看出:
public NavigableSet<E> descendingSet() {
return new TreeSet<>(m.descendingMap());
}
- :函数返回此集合中严格大于给定元素的最小元素,如果没有此类元素,则返回
null
- :返回此
集中包含的元素的相反顺序
视图
TreeSet
固有地使用TreeMap
来实现其功能。对downingset()
的调用最终会在TreeMap
实例上调用downingmap()
函数,从以下源代码可以看出:
public NavigableSet<E> descendingSet() {
return new TreeSet<>(m.descendingMap());
}
当然,答案很有信息性,谢谢。当然,答案很有信息性,谢谢。
System.out.printf("%n Higher than 40 : %s", set.higher(40)); // prints 45
set = set.descendingSet(); // create a reverse ordering
//comparator as described above
System.out.printf("%n Higher than 40 : %s", set.higher(40)); // prints 34
set = set.descendingSet(); // again trying to get descending set!
System.out.printf("%n Higher than 40 : %s", set.higher(40)) // prints 45