函数Collections.reverseOrder()有什么作用?

时间:2018-12-14 10:34:06

标签: java collections comparator

app.request.headers.get('referer')

执行$my_full_path= $path.DIRECTORY_SEPARATOR.$file; 函数后将输出什么?

4 个答案:

答案 0 :(得分:3)

java.util.Collections.reverseOrder()方法是java.util.Collections类方法。

根据javadoc:

  

返回一个与自然顺序相反的比较器   在实现Comparable接口的对象集合上。   自然排序是对象自身施加的排序   compareTo方法public static Comparator reverseOrder()

您可以在以下站点上找到一些其他好的示例: https://www.geeksforgeeks.org/collections-reverseorder-java-examples/

在您的情况下,以下表达式是等效的:

 Collections.min(list, Collections.reverseOrder()) 

 Collections.max(list)

答案 1 :(得分:3)

有时候最好自己看看源代码。

public static <T> Comparator<T> reverseOrder() {
    return (Comparator<T>) ReverseComparator.REVERSE_ORDER;
}

REVERSE_ORDER只是ReverseComparator内部类的对象。

  static final ReverseComparator REVERSE_ORDER = new ReverseComparator();

答案 2 :(得分:3)

这似乎是关于Collections的采访问题:

现在,Collections.reverseOrder是一个颠倒正常顺序的Comparator>变成了<,反之亦然。

因此以下语句相同:

int max = Collections.min(list, Collections.reverseOrder());
int max = Collections.max(list);

结果是 maximum

没有实际的速度损失,因为列表本身未修改,因此列表不会被复制。 List的复杂度为 O(N):需要遍历所有元素。

在可行的情况下,使用像SortedSet这样的TreeSet而不是List会更好。

答案 3 :(得分:2)

这里是一个示例,此功能只是将您的数字取反,而数字很低。检查此示例,希望您能理解它的作用。

import java.util.*;

public class HelloWorld{

     public static void main(String []args){
        List<Integer> nums = Arrays.asList(1, 10, 5, 23, 2, 3);
        nums.stream()
            .forEach(System.out::println);

        nums.stream()
            .sorted(Comparator.reverseOrder())
            .forEach(System.out::println);
     }
}