我希望根據第一列中的值對以下陣列進行排序,并在輸入二維陣列中保存行的初始位置。
int [][]intervals =
{
{3,4},
{2,3},
{1,2},
};
輸出將是
{1,2,2}
{2,3,1}
{3,4,0}
這里第三列是輸入二維陣列中行的初始位置。
uj5u.com熱心網友回復:
您可以相應地進行杠桿化Arrays.sort并通過 a Comparator。這將適用于您的情況:
int [][] intervals =
{
{3,4},
{2,3},
{1,2},
};
int mRows = intervals.length;
int nCols = intervals[0].length;
int [][]intervalsNew = new int[mRows][nCols 1];
for (int i = 0; i < mRows; i ) {
intervalsNew[i] = Arrays.copyOf(intervals[i], nCols 1);
intervalsNew[i][nCols] = i;
}
Arrays.sort(intervalsNew, new Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return Double.compare(a[1], b[1]);
}
});
for (int i = 0; i < mRows; i ) {
System.out.println(Arrays.toString(intervalsNew[i]));
}
輸出:
[1, 2, 2]
[2, 3, 1]
[3, 4, 0]
uj5u.com熱心網友回復:
我對某些方法的了解比 mantri 少,因此我在這里嚴重依賴流,并且代碼更冗長。這是我的嘗試:
public class Intervals {
public static void main(String[] args) {
int[][] intervals = { { 3, 4 }, { 2, 3 }, { 1, 2 }, };
// Convert to List to make easier to work on.
List<List<Integer>> outer = new ArrayList<>();
for (int[] x : intervals) {
List<Integer> inner = new ArrayList<>();
for (int y : x) {
inner.add(y);
}
outer.add(inner);
}
// Create list of ints 0,1,2,3 to add to end.
List<Integer> range = IntStream.rangeClosed(0, outer.size() - 1)
.boxed()
.collect(Collectors.toList());
range.stream()
.forEach(i -> {
outer.get(i)
.add(i);
});
List<int[]> temp_new_intervals = new ArrayList<>();
outer.stream()
.sorted((c1, c2) -> {
if (c1.get(0) > c2.get(0)) {
return 1;
} else if (c1.get(0) == c2.get(0)) {
return 0;
} else {
return -1;
}
})
.forEach(arr -> {
// Because arr is Object [] we need to make it int[]
Object[] objects = arr.toArray();
int[] ints = Arrays.stream(objects)
.mapToInt(o -> (int) o)
.toArray();
temp_new_intervals.add(ints);
});
int[][] new_intervals = new int[outer.size()][];
for (int i = 0; i < outer.size(); i ) {
new_intervals[i] = temp_new_intervals.get(i);
}
for (int[] x : new_intervals) {
System.out.println(Arrays.toString(x));
}
}
}
輸出:
[1, 2, 2]
[2, 3, 1]
[3, 4, 0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405346.html
標籤:
上一篇:批量資料的嵌套陣列排序
下一篇:遍歷字串地址陣列
