在Java中获取Matrix的排序值

时间:2018-05-17 15:06:25

标签: java sorting matrix

我是Java的全新人物。 我需要在Java中“排序”矩阵的值,但我不知道该怎么做。

这是我的矩阵:

double matrix = new double[3][3];
// fill matrix with some random values

矩阵的结果可能是这样的:

3,4    9.4    7.7
4,1    3.48   9.9
1,6    3.5    5.3

现在我需要获得i&该矩阵的j值以相应值的降序排列。有一些方法可以做到这一点?

在这种情况下,带有排序值的向量应包含如下内容: (1,2),(0,1),(0,2),(2,2)......(2,1)

1 个答案:

答案 0 :(得分:1)

使用 Java 8 ,您可以使用Lambda执行此操作:

int rows = matrix.lenght;
int cols = matix[0].lenght;

List<List<Integer>>orderedSavingsList = IntStream.range(0, rows).mapToObj(i ->
            IntStream.range(0, cols).mapToObj(j ->
                    new double[]{i, j, matrix[i][j]}
            )
    )
    .flatMap(x -> x).filter(t -> t[0] < t[1])
    .sorted((a, b) -> Double.compare(b[2], a[2]))
    .map(a -> Arrays.asList((int) a[0], (int) a[1]))
    .collect(Collectors.toList());

之后尝试使用以下方式打印列表:

orderedSavingsList.forEach(System.out::println);