使用Array.sort和Lambda表达式对对象进行降序排序

时间:2019-06-25 10:42:05

标签: java sorting

我想按降序对对象集合进行排序。

下面的代码正在按升序对itemDetails对象进行排序。

Arrays.sort(itemDetails, (a, b) -> 
    String.valueOf(a.getAvailableQuantity())
          .compareTo(String.valueOf(b.getAvailableQuantity())));

但是我希望输出按降序排列。

3 个答案:

答案 0 :(得分:2)

切换到(b, a)

Arrays.sort(itemDetails, (b, a) ->
    String.valueOf(a.getAvailableQuantity())
          .compareTo(String.valueOf(b.getAvailableQuantity())));

实际上将名称更改为有意义的名称,以便可以理解排序逻辑

答案 1 :(得分:2)

使用Comparator.comparing(避免重复String.valueOfgetAvailableQuantity)和Comparator.reversed()(清楚地表明您正在颠倒排序顺序): / p>

Arrays.sort(
    itemDetails,
    Comparator.comparing((ItemDetails a) -> String.valueOf(a.getAvailableQuantity())).reversed());

其中ItemDetails是数组元素类型的名称(或某些具有getAvailableQuantity方法的超类型)。

答案 2 :(得分:1)

添加减号:

Arrays.sort(itemDetails, (a, b) -> -String.valueOf(a.getAvailableQuantity()).compareTo(String.valueOf(b.getAvailableQuantity())));