問題是要根據這些內部陣列元素的絕對差值,對兩個元素陣列進行降序排序,所以{{1, 3}, {4, 12}, {5, 8}會被排序為{{4, 12}, {5, 8}, {1, 3}
我有這樣的代碼:
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
整數[][] arr = {{1, 3}, {3, 12}, {12, 16}}。
Arrays.sort(arr, Comparator.comparing(arr, (Integer[] a, Integer[] b) -> a[1] b[1] - a[0] - b[0] )。)
}
}
但是我得到這個錯誤。它說 "無法推斷出功能介面型別"。
編輯:將上述內容改為
后import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
整數[][] arr = {{1, 3}, {3, 12}, {12, 16}}。
Arrays.sort(arr, Comparator.comparing(a -> a[0] - a[1])。
for (int i = 0; i < arr.length; i ) {
System.out. print("{" arr[i][0] ", " arr[i][1] "}, ") 。)
}
}
我得到了想要的輸出,但是我無法讓reversed()方法像這個答案中那樣作業。我得到了這個錯誤,它說 "期待陣列型別;發現:'java.lang.Object'"
我想我的問題已經得到了大部分的回答,但是如果有人能用反轉的方式來澄清這個問題,我會非常感激。
編輯:對不起,我忽略了使用Math.abs(),因為在我的問題中,我知道陣列總是在增加,比如{2,3}, {3,6}, {6,8}...等等
。uj5u.com熱心網友回復:
遞減:
Arrays.sort(arr, (o1, o2) -> Math. abs(o2[0] - o2[1]) - Math.abs(o1[0] - o1[1] )。
升華:
Arrays.sort(arr, Comparator.comparingInt(o -> Math.abs(o[0] - o[1]))。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321061.html
標籤:
