首页 > 解决方案 > 使用 stream() 和 sorted() 或使用 Collections 方法来反转列表顺序是否更快

问题描述

我试图找出哪个更快:

Collections.reverse(bottlesList);




bottlesList= bottlesList.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());

标签: javacollectionsjava-8java-stream

解决方案


Collections.reverse是这里唯一的选项,它将基于索引反转元素,关于时间复杂度,它是线性操作。

sorted(Collections.reverseOrder())将基于 Comparator 排序,因此它将按值而不是索引排序。

简单对比:

    List<Integer> list1 = Arrays.asList(4,3,5,7,1);
    List<Integer> list2 = Arrays.asList(4,3,5,7,1);

    Collections.reverse(list1);
    System.out.println(list1);
    // Output: [1, 7, 5, 3, 4]

    List<Integer> list3 = list2.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());;
    System.out.println(list3);
    // Output: [7, 5, 4, 3, 1]

推荐阅读