Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TreeSet集合的higher()方法在递减模式下的行为?_Java_Collections - Fatal编程技术网

Java 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

当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.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