回答編集履歴
2
Stream APIでの検索方法について追記
test
CHANGED
@@ -201,3 +201,45 @@
|
|
201
201
|
C>
|
202
202
|
|
203
203
|
```
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
---
|
208
|
+
|
209
|
+
**追記しました: 2019-12-12 14:46**
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
`ArrayList`の場合、リスト中のインスタンスを検索する時にループなどで`ArrayList#get`で要素を逐一見ていく必要があるかもしれません。Stream APIを使うとよりスマートなコードとなる場合もあります。
|
214
|
+
|
215
|
+
```Java
|
216
|
+
|
217
|
+
import java.util.List;
|
218
|
+
|
219
|
+
import java.util.ArrayList;
|
220
|
+
|
221
|
+
import java.util.stream.Collectors;
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
...省略
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
// Stream APIを使って指定の要素(例:nameフィールドが"name04")のインスタンスを取得
|
230
|
+
|
231
|
+
List<Food> foods = list.stream().filter(elem -> elem.getName().equals("name04")).collect(Collectors.toList());
|
232
|
+
|
233
|
+
if (foods.size() == 1) {
|
234
|
+
|
235
|
+
Food target = foods.get(0);
|
236
|
+
|
237
|
+
target.setName("NewNameFor#4");
|
238
|
+
|
239
|
+
target.setPriceNum(444);
|
240
|
+
|
241
|
+
target.setOrderNum(4444);
|
242
|
+
|
243
|
+
}
|
244
|
+
|
245
|
+
```
|
1
assertについて注記
test
CHANGED
@@ -126,8 +126,6 @@
|
|
126
126
|
|
127
127
|
dump(list);
|
128
128
|
|
129
|
-
|
130
|
-
|
131
129
|
}
|
132
130
|
|
133
131
|
|
@@ -156,7 +154,7 @@
|
|
156
154
|
|
157
155
|
|
158
156
|
|
159
|
-
上記コードの実行結果です。リスト中の`list[2]`のインスタンスに影響があるのが分かります。
|
157
|
+
上記コードの実行結果です。リスト中の`list[2]`のインスタンスに影響があるのが分かります。尚、`java`コマンド実行時に"-ea"オプションを付け、コード中の`assert`診断が有効になるようにしています。
|
160
158
|
|
161
159
|
```CMD
|
162
160
|
|
@@ -174,7 +172,7 @@
|
|
174
172
|
|
175
173
|
|
176
174
|
|
177
|
-
C>java t1
|
175
|
+
C>java -ea t1
|
178
176
|
|
179
177
|
start t1.main
|
180
178
|
|