回答編集履歴

4

追記

2019/03/19 11:12

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -172,6 +172,20 @@
172
172
 
173
173
 
174
174
 
175
+ Comparator.naturalOrder はじめいくつかコンパレータが用意されていることを考えると、
176
+
177
+ そのオブジェクトのcompareToメソッドを呼び出すだけのコンパレータを作る意義はあまり無いです。
178
+
179
+
180
+
181
+ 文字数順だとか、ちょっと捻ったソートを試した方が学びは深いでしょう。
182
+
183
+
184
+
185
+ まぁ、ラムダ式を利用できる状況なら匿名クラスにはあまり出番がありませんが...
186
+
187
+
188
+
175
189
  コードの書き方について
176
190
 
177
191
  ---

3

追記

2019/03/19 11:12

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -118,6 +118,22 @@
118
118
 
119
119
 
120
120
 
121
+ // ラムダ式を利用
122
+
123
+ {
124
+
125
+ var lst = new ArrayList<>(names);
126
+
127
+
128
+
129
+ lst.sort((s1, s2) -> s1.compareTo(s2));
130
+
131
+ System.out.println(lst);
132
+
133
+ }
134
+
135
+
136
+
121
137
  // 自然順ならこれでも良し
122
138
 
123
139
  {
@@ -140,9 +156,11 @@
140
156
 
141
157
 
142
158
 
143
- **実行結果** [Wandbox](https://wandbox.org/permlink/safYqxIEYtcEWBg4)
159
+ **実行結果** [Wandbox](https://wandbox.org/permlink/pPE16fwjTp5SVciH)
144
160
 
145
161
  ```
162
+
163
+ [Bob, Steve, Tom]
146
164
 
147
165
  [Bob, Steve, Tom]
148
166
 

2

追記

2019/03/19 10:55

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -38,6 +38,122 @@
38
38
 
39
39
 
40
40
 
41
+ サンプル
42
+
43
+ ---
44
+
45
+ ```Java
46
+
47
+ import java.util.ArrayList;
48
+
49
+ import java.util.Comparator;
50
+
51
+ import java.util.List;
52
+
53
+
54
+
55
+
56
+
57
+ class AnonymousComparator implements Comparator<String> {
58
+
59
+ @Override
60
+
61
+ public int compare(String s1, String s2) {
62
+
63
+ return s1.compareTo(s2);
64
+
65
+ }
66
+
67
+ }
68
+
69
+
70
+
71
+ class Main {
72
+
73
+ public static void main(String[] args) {
74
+
75
+ var names = List.of("Tom", "Bob", "Steve");
76
+
77
+
78
+
79
+ // 匿名クラスを利用
80
+
81
+ {
82
+
83
+ var lst = new ArrayList<>(names);
84
+
85
+
86
+
87
+ lst.sort(new Comparator<String>() {
88
+
89
+ @Override
90
+
91
+ public int compare(String s1, String s2) {
92
+
93
+ return s1.compareTo(s2);
94
+
95
+ }
96
+
97
+ });
98
+
99
+ System.out.println(lst);
100
+
101
+ }
102
+
103
+
104
+
105
+ // 外部クラスを利用
106
+
107
+ {
108
+
109
+ var lst = new ArrayList<>(names);
110
+
111
+
112
+
113
+ lst.sort(new AnonymousComparator());
114
+
115
+ System.out.println(lst);
116
+
117
+ }
118
+
119
+
120
+
121
+ // 自然順ならこれでも良し
122
+
123
+ {
124
+
125
+ var lst = new ArrayList<>(names);
126
+
127
+
128
+
129
+ lst.sort(Comparator.naturalOrder());
130
+
131
+ System.out.println(lst);
132
+
133
+ }
134
+
135
+ }
136
+
137
+ }
138
+
139
+ ```
140
+
141
+
142
+
143
+ **実行結果** [Wandbox](https://wandbox.org/permlink/safYqxIEYtcEWBg4)
144
+
145
+ ```
146
+
147
+ [Bob, Steve, Tom]
148
+
149
+ [Bob, Steve, Tom]
150
+
151
+ [Bob, Steve, Tom]
152
+
153
+ ```
154
+
155
+
156
+
41
157
  コードの書き方について
42
158
 
43
159
  ---

1

修正

2019/03/19 10:53

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```Java
8
8
 
9
- class AnonymousComparator extends Comparator<String> {
9
+ class AnonymousComparator implements Comparator<String> {
10
10
 
11
11
  public int compare(String o1, String o2) {
12
12