简体   繁体   English

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

[英]Sorting an object in descending order using Array.sort and Lambda Expression

I want to sort a collection of objects in descending order. 我想按降序对对象集合进行排序。

Below code is working to sort the itemDetails object in ascending order. 下面的代码用于按升序对itemDetails对象进行排序。

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

But I wanted the output in descending order. 但是我希望输出按降序排列。

Switch to (b, a) : 切换至(b, a)

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

Actually change names to meaningful so sorting logic will be understandable 实际上将名称更改为有意义的名称,以便可以理解排序逻辑

Use Comparator.comparing (to avoid having to repeat the String.valueOf and getAvailableQuantity ) and Comparator.reversed() (to clearly convey the fact that you are reversing the sort order): 使用Comparator.comparing (避免重复String.valueOfgetAvailableQuantity )和Comparator.reversed() (以清楚地表明您正在反转排序顺序):

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

where ItemDetails is the name of the element type of the array (or some supertype which also has the getAvailableQuantity method). 其中ItemDetails是数组的元素类型的名称(或某些具有getAvailableQuantity方法的超类型)。

加减号:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 lambda 表达式按降序对二维数组进行排序 - Sorting 2-D array in descending order using lambda expression 使用不带Array.sort的SelectionSort按字母顺序对数组排序 - Sort Array by Alphabetical order using SelectionSort without Array.sort 在没有比较器的情况下使用Array.sort()对数组进行排序 - Sorting an array using Array.sort() without a comparator 以降序对数组进行排序? - Sorting an array in descending order? 数组排序降序 - Array Sorting Descending Order 使用 arrays.sort function 以降序对 arrays 的数组进行排序,导致 Z93F72694FB48 中的错误 - sorting array of arrays in descending order using arrays.sort function is resulting in errors in java 使用java 8功能(stream,lambda等)按降序排序int数组 - Sort int array in descending order using java 8 features (stream, lambda, etc) 如何在java中仅使用lambda按升序和降序对整数数组进行排序 - How to sort integer array in ascending and descending order using lambda only in java 具有IComparer和Array.Sort的C#Lambda表达式(从Java转换为C#) - C# Lambda expression with IComparer and Array.Sort (converting from Java to C#) Java 使用 Array.sort() 对字符串数组进行排序,就像 python 使用 key=lambda x 排序: - Java sort string array using Array.sort() like python's sorted with key=lambda x:
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM