按第一个元素排序字符串数组的列表

问题描述 投票:0回答:1

我想通过相同列表的每个数组元素中的第一个元素以相反的顺序对字符串数组列表进行排序,所以2、1、0

这是我到目前为止所尝试的:

List<String[]> array = new ArrayList<>();

String[] arr1 = {"0", "1/1"};
String[] arr2 = {"1", "1/2"};
String[] arr3 = {"2", "1/4"};

array.add(arr1);
array.add(arr2);
array.add(arr3);

Comparator<String[]> byFirstElement = 
    (String[] array1, String[] array2) -> Integer.parseInt(array1[0]) - 
                                           Integer.parseInt(array2[0]);


List<String[]> result = array.stream()
        .sorted(array,byFirstElement) // error here
        .collect(Collectors.toList());

问题是在排序行上我突出显示了一个错误,说:“ sorted(java.util.List,java.util.Comparator

java sorting comparator
1个回答
1
投票
请注意,您的比较逻辑不会以降序排列,因此您需要将其更改为

Comparator<String[]> byFirstElement = (array1, array2) -> Integer.parseInt(array2[0]) - Integer.parseInt(array1[0]); //reversed

或在调用sorted()时将其反转:

....sorted(byFirstElement.reversed())
© www.soinside.com 2019 - 2024. All rights reserved.