teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

if分のネストが深くならないよう修正

2017/12/28 11:30

投稿

aterai
aterai

スコア158

answer CHANGED
@@ -22,22 +22,17 @@
22
22
  }
23
23
  // Java 1.8 以前
24
24
  // list.sort(new ListIntegerComparator());
25
- // Collections#reverse(list);
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
- return a.get(3) - b.get(3);
28
+ Integer i = a.get(1) - b.get(1);
34
- }
35
- } else {
29
+ if (i == 0) {
36
- return a.get(2) - b.get(2);
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 以前?でのサンプルを追加

2017/12/28 11:30

投稿

aterai
aterai

スコア158

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

インデックスが間違っていた

2017/12/28 11:21

投稿

aterai
aterai

スコア158

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]]