我对 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 值。有一些方法可以做到这一点吗?
在这种情况下,具有排序值的 vector 应该包含如下内容: (1,2)、(0,1)、(0,2)、(2,2) ... (2,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);
关于java - 在Java中获取矩阵的排序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394769/