回答編集履歴
3
if分のネストが深くならないよう修正
answer
CHANGED
@@ -22,22 +22,17 @@
|
|
22
22
|
}
|
23
23
|
// Java 1.8 以前
|
24
24
|
// list.sort(new ListIntegerComparator());
|
25
|
-
// Collections
|
25
|
+
// Collections.reverse(list);
|
26
26
|
class IntegerListComparator implements Comparator<List<Integer>> {
|
27
27
|
@Override public int compare(List<Integer> a, List<Integer> b) {
|
28
|
-
if (Objects.equals(a.get(1), b.get(1))) {
|
29
|
-
if (Objects.equals(a.get(2), b.get(2))) {
|
30
|
-
if (Objects.equals(a.get(3), b.get(3))) {
|
31
|
-
return 0;
|
32
|
-
} else {
|
33
|
-
|
28
|
+
Integer i = a.get(1) - b.get(1);
|
34
|
-
}
|
35
|
-
|
29
|
+
if (i == 0) {
|
36
|
-
|
30
|
+
i = a.get(2) - b.get(2);
|
37
|
-
}
|
38
|
-
} else {
|
39
|
-
return a.get(1) - b.get(1);
|
40
31
|
}
|
32
|
+
if (i == 0) {
|
33
|
+
i = a.get(3) - b.get(3);
|
34
|
+
}
|
35
|
+
return i;
|
41
36
|
}
|
42
37
|
}
|
43
38
|
```
|
2
Java 1.8 以前?でのサンプルを追加
answer
CHANGED
@@ -20,5 +20,24 @@
|
|
20
20
|
// [[30, 45, 72], [27, 35, 77], [27, 33, 59], [15, 20, 35], [15, 20, 31]]
|
21
21
|
}
|
22
22
|
}
|
23
|
-
|
23
|
+
// Java 1.8 以前
|
24
|
+
// list.sort(new ListIntegerComparator());
|
25
|
+
// Collections#reverse(list);
|
26
|
+
class IntegerListComparator implements Comparator<List<Integer>> {
|
27
|
+
@Override public int compare(List<Integer> a, List<Integer> b) {
|
28
|
+
if (Objects.equals(a.get(1), b.get(1))) {
|
29
|
+
if (Objects.equals(a.get(2), b.get(2))) {
|
30
|
+
if (Objects.equals(a.get(3), b.get(3))) {
|
31
|
+
return 0;
|
32
|
+
} else {
|
33
|
+
return a.get(3) - b.get(3);
|
34
|
+
}
|
35
|
+
} else {
|
36
|
+
return a.get(2) - b.get(2);
|
37
|
+
}
|
38
|
+
} else {
|
39
|
+
return a.get(1) - b.get(1);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
24
43
|
```
|
1
インデックスが間違っていた
answer
CHANGED
@@ -13,8 +13,8 @@
|
|
13
13
|
Arrays.asList(27, 33, 59),
|
14
14
|
Arrays.asList(27, 35, 77));
|
15
15
|
list.sort(Comparator.<List<Integer>>comparingInt(l -> l.get(0))
|
16
|
+
.thenComparingInt(l -> l.get(1))
|
16
17
|
.thenComparingInt(l -> l.get(2))
|
17
|
-
.thenComparingInt(l -> l.get(3))
|
18
18
|
.reversed());
|
19
19
|
System.out.println(list);
|
20
20
|
// [[30, 45, 72], [27, 35, 77], [27, 33, 59], [15, 20, 35], [15, 20, 31]]
|