如何按每个列表的第一个元素对List <List <String >>进行排序?

时间:2019-12-02 17:37:53

标签: java sorting java-stream

如何按每个列表的第一个元素对列表列表进行排序?我有这样的清单:

//depot/...

我想

[angel, angle, galen, glean, lange]
[abel, able, bale, bela, elba]
[elan, lane, lean, lena, neal]
[caret, carte, cater, crate, trace]
[evil, levi, live, veil, vile]
[alger, glare, lager, large, regal]

如何使用Stream做到这一点?

这是我的代码:

[abel, able, bale, bela, elba]
[alger, glare, lager, large, regal]
[angel, angle, galen, glean, lange]
[caret, carte, cater, crate, trace]
[elan, lane, lean, lena, neal]
[evil, levi, live, veil, vile]

1 个答案:

答案 0 :(得分:3)

您可以为此致电Comparator.comparing

List<List<String>> sortedList = 
    lis.stream().sorted(Comparator.comparing(x -> x.get(0)))
        .collect(Collectors.toList());

如果您只想对列表进行排序,则不需要流。 List.sort将完成这项工作:

lis.sort(Comparator.comparing(x -> x.get(0)));

此外,请勿使用原始类型。写ArrayList<>,而不写ArrayList

List<List<String>> lis = new ArrayList<>();