我是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)
答案 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);