如何根据元素的总和对包含整数列表的列表进行排序

时间:2019-06-20 10:18:02

标签: java lambda java-stream

我已经创建了一个包含整数列表的列表,我想根据其元素的总和对列表列表进行排序,但是实际上我不知道该怎么做; /

public static void main(String[] args) {
    List<List<Integer>> listList = Arrays.asList(
            Arrays.asList(1, 2, 3),
            Arrays.asList(5, 4, 3),
            Arrays.asList(27, 4, 33),
            Arrays.asList(27, 41, 33)
            );

    List<Integer> sumList = listList.stream()
            .sorted((list1, list2) -> {
                int sumlistCompare = Integer.sum()

            })

2 个答案:

答案 0 :(得分:0)

您可以计算列表的总和并在排序为时进行比较:

private int sumOfList(List<Integer> list) {
    return list.stream().mapToInt(i -> i).sum();
}

List<List<Integer>> sumListSort = listList.stream()
        .sorted(Comparator.comparingInt(SampleClass::sumOfList))
        .collect(Collectors.toList());

答案 1 :(得分:0)

List<List<Integer>> sortedListOfLists = listList.stream()
                .sorted((list1, list2) -> {
                    int list1Sum = list1.stream().mapToInt(Integer::intValue).sum();
                    int list2Sum = list2.stream().mapToInt(Integer::intValue).sum();
                    return list1Sum - list2Sum;
                }).collect(Collectors.toList());