回答編集履歴
4
追記
answer
CHANGED
@@ -85,6 +85,13 @@
|
|
85
85
|
[Bob, Steve, Tom]
|
86
86
|
```
|
87
87
|
|
88
|
+
Comparator.naturalOrder はじめいくつかコンパレータが用意されていることを考えると、
|
89
|
+
そのオブジェクトのcompareToメソッドを呼び出すだけのコンパレータを作る意義はあまり無いです。
|
90
|
+
|
91
|
+
文字数順だとか、ちょっと捻ったソートを試した方が学びは深いでしょう。
|
92
|
+
|
93
|
+
まぁ、ラムダ式を利用できる状況なら匿名クラスにはあまり出番がありませんが...
|
94
|
+
|
88
95
|
コードの書き方について
|
89
96
|
---
|
90
97
|
teratailには、コードを見やすく表示する機能があります。
|
3
追記
answer
CHANGED
@@ -58,6 +58,14 @@
|
|
58
58
|
System.out.println(lst);
|
59
59
|
}
|
60
60
|
|
61
|
+
// ラムダ式を利用
|
62
|
+
{
|
63
|
+
var lst = new ArrayList<>(names);
|
64
|
+
|
65
|
+
lst.sort((s1, s2) -> s1.compareTo(s2));
|
66
|
+
System.out.println(lst);
|
67
|
+
}
|
68
|
+
|
61
69
|
// 自然順ならこれでも良し
|
62
70
|
{
|
63
71
|
var lst = new ArrayList<>(names);
|
@@ -69,11 +77,12 @@
|
|
69
77
|
}
|
70
78
|
```
|
71
79
|
|
72
|
-
**実行結果** [Wandbox](https://wandbox.org/permlink/
|
80
|
+
**実行結果** [Wandbox](https://wandbox.org/permlink/pPE16fwjTp5SVciH)
|
73
81
|
```
|
74
82
|
[Bob, Steve, Tom]
|
75
83
|
[Bob, Steve, Tom]
|
76
84
|
[Bob, Steve, Tom]
|
85
|
+
[Bob, Steve, Tom]
|
77
86
|
```
|
78
87
|
|
79
88
|
コードの書き方について
|
2
追記
answer
CHANGED
@@ -18,6 +18,64 @@
|
|
18
18
|
ソート時に呼び出されます。
|
19
19
|
putSortOrderはおそらくコンパレータのセッターでしょう。
|
20
20
|
|
21
|
+
サンプル
|
22
|
+
---
|
23
|
+
```Java
|
24
|
+
import java.util.ArrayList;
|
25
|
+
import java.util.Comparator;
|
26
|
+
import java.util.List;
|
27
|
+
|
28
|
+
|
29
|
+
class AnonymousComparator implements Comparator<String> {
|
30
|
+
@Override
|
31
|
+
public int compare(String s1, String s2) {
|
32
|
+
return s1.compareTo(s2);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
class Main {
|
37
|
+
public static void main(String[] args) {
|
38
|
+
var names = List.of("Tom", "Bob", "Steve");
|
39
|
+
|
40
|
+
// 匿名クラスを利用
|
41
|
+
{
|
42
|
+
var lst = new ArrayList<>(names);
|
43
|
+
|
44
|
+
lst.sort(new Comparator<String>() {
|
45
|
+
@Override
|
46
|
+
public int compare(String s1, String s2) {
|
47
|
+
return s1.compareTo(s2);
|
48
|
+
}
|
49
|
+
});
|
50
|
+
System.out.println(lst);
|
51
|
+
}
|
52
|
+
|
53
|
+
// 外部クラスを利用
|
54
|
+
{
|
55
|
+
var lst = new ArrayList<>(names);
|
56
|
+
|
57
|
+
lst.sort(new AnonymousComparator());
|
58
|
+
System.out.println(lst);
|
59
|
+
}
|
60
|
+
|
61
|
+
// 自然順ならこれでも良し
|
62
|
+
{
|
63
|
+
var lst = new ArrayList<>(names);
|
64
|
+
|
65
|
+
lst.sort(Comparator.naturalOrder());
|
66
|
+
System.out.println(lst);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
```
|
71
|
+
|
72
|
+
**実行結果** [Wandbox](https://wandbox.org/permlink/safYqxIEYtcEWBg4)
|
73
|
+
```
|
74
|
+
[Bob, Steve, Tom]
|
75
|
+
[Bob, Steve, Tom]
|
76
|
+
[Bob, Steve, Tom]
|
77
|
+
```
|
78
|
+
|
21
79
|
コードの書き方について
|
22
80
|
---
|
23
81
|
teratailには、コードを見やすく表示する機能があります。
|
1
修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
匿名クラスのインスタンスを作っています。次のように書いているのと意味は同じです。
|
4
4
|
```Java
|
5
|
-
class AnonymousComparator
|
5
|
+
class AnonymousComparator implements Comparator<String> {
|
6
6
|
public int compare(String o1, String o2) {
|
7
7
|
return o1.compareTo(o2);
|
8
8
|
}
|