如何使用lambdas / streams每行对2D List进行排序?

时间:2018-04-10 05:15:36

标签: java list sorting arraylist 2d

我有一个矩阵,我想知道是否有任何方法可以对每行进行排序,我已经尝试通过遍历ArrayList并在每行中比较每个元素来手动对其进行排序,但这似乎很乏味。有没有更好的方法让我对此进行排序。我在考虑使用lambdas / streams

我有以下字符串列表,

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

假设矩阵包含ff:

sad,eat,air,vice,ride
cash,grade,save,hide,are
twin,grid,goose,hey,shade

排序后的输出为:

air,eat,ride,sad,vice
are,cash,grade,hide,save
goose,grid,hey,shade,twin

通过使用循环和比较器按照我想要的方式对其进行排序来解决我的问题。这是代码:

for (List<String> row : matrix) {
                row.sort(Comparator.comparing(r -> r.getString()));
}

2 个答案:

答案 0 :(得分:0)

试试这个。

matrix.forEach(row -> Collections.sort(row));

答案 1 :(得分:-1)

您可以将forEach()用于主列表,并将sort()用于每个子列表:

matrix.stream().forEach(m -> {
    System.out.print(m.stream().sorted().collect(Collectors.joining(", ")));
    System.out.println();
});