假設我有一個名為的串列,numbersList其中包含以下元素:[ 101, 102, . . 196, 201, 202, . . 296, 301, 302, . . 396,。. 15601, 15602, . . 15696]
我想對它進行排序,使其變成這樣:[ 101, 201, 301, 15601, 102, 202, 302, 15602, ... . 196, 296, 396, 15696 ]
請注意,每個組將始終以第 96 個數字結束。這意味著我總是從 x01 到 x96,其中 x 是一個長值。
我嘗試使用一些回圈陳述句來做到這一點,但我無處可去,因為我不知道串列中有多少組,這就是為什么我找不到合適的回圈。
這是我失敗的嘗試:(
for (int i = 0 ; i < numbersList.size() ; i = i groups-1) {
numbersList2.add(numbersList.get(i));
for (int j = 0 ; j == groups - 1; j ) {
int k = i 96;
numbersList2.add(numbersList.get(k));
}
}
該group變數告訴我用戶將輸入多少組。
uj5u.com熱心網友回復:
這可能有幫助:
List<Integer> list = Arrays.asList(101, 102, 103, 201, 202, 203, 295, 296, 301, 302, 303, 304, 396);
list.sort((o1, o2) -> {
int v1 = o1 % 100;
int v2 = o2 % 100;
if (v1 < v2) {
return -1;
} else if (v1 == v2) {
return o1.compareTo(o2);
} else {
return 1;
}
});
System.out.println(Arrays.toString(list.toArray()));
給出:
[101, 201, 301, 102, 202, 302, 103, 203, 303, 304, 295, 296, 396]
uj5u.com熱心網友回復:
此處可使用鏈式比較器按余數按模 100 然后按數字排序:
List<Integer> data = Arrays.asList(401, 101, 602, 102, 103, 196, 201, 202, 205, 296, 301, 302, 396, 15601, 15602,15696);
data.sort(Comparator.<Integer>comparingInt(x -> x % 100)
.thenComparingInt(x -> x)
);
// or this shorter form
data.sort(Comparator.comparing((Integer x) -> x % 100).thenComparing(x -> x));
System.out.println(data);
輸出:
[101, 201, 301, 401, 15601, 102, 202, 302, 602, 15602, 103, 205, 196, 296, 396, 15696]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/362892.html
上一篇:如何通過在js中迭代物件來過濾它
