回答編集履歴
2
Stream APIでの検索方法について追記
answer
CHANGED
@@ -99,4 +99,25 @@
|
|
99
99
|
Food: name=name04, priceNum=40, orderNum=400
|
100
100
|
|
101
101
|
C>
|
102
|
+
```
|
103
|
+
|
104
|
+
---
|
105
|
+
**追記しました: 2019-12-12 14:46**
|
106
|
+
|
107
|
+
`ArrayList`の場合、リスト中のインスタンスを検索する時にループなどで`ArrayList#get`で要素を逐一見ていく必要があるかもしれません。Stream APIを使うとよりスマートなコードとなる場合もあります。
|
108
|
+
```Java
|
109
|
+
import java.util.List;
|
110
|
+
import java.util.ArrayList;
|
111
|
+
import java.util.stream.Collectors;
|
112
|
+
|
113
|
+
...省略
|
114
|
+
|
115
|
+
// Stream APIを使って指定の要素(例:nameフィールドが"name04")のインスタンスを取得
|
116
|
+
List<Food> foods = list.stream().filter(elem -> elem.getName().equals("name04")).collect(Collectors.toList());
|
117
|
+
if (foods.size() == 1) {
|
118
|
+
Food target = foods.get(0);
|
119
|
+
target.setName("NewNameFor#4");
|
120
|
+
target.setPriceNum(444);
|
121
|
+
target.setOrderNum(4444);
|
122
|
+
}
|
102
123
|
```
|
1
assertについて注記
answer
CHANGED
@@ -62,7 +62,6 @@
|
|
62
62
|
|
63
63
|
// 修正後のリストの内容を表示
|
64
64
|
dump(list);
|
65
|
-
|
66
65
|
}
|
67
66
|
|
68
67
|
private static void dump(ArrayList<Food> list) {
|
@@ -77,7 +76,7 @@
|
|
77
76
|
|
78
77
|
```
|
79
78
|
|
80
|
-
上記コードの実行結果です。リスト中の`list[2]`のインスタンスに影響があるのが分かります。
|
79
|
+
上記コードの実行結果です。リスト中の`list[2]`のインスタンスに影響があるのが分かります。尚、`java`コマンド実行時に"-ea"オプションを付け、コード中の`assert`診断が有効になるようにしています。
|
81
80
|
```CMD
|
82
81
|
C>javac t1.java
|
83
82
|
|
@@ -86,7 +85,7 @@
|
|
86
85
|
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
|
87
86
|
Java HotSpot(TM) Client VM (build 25.162-b12, mixed mode, sharing)
|
88
87
|
|
89
|
-
C>java t1
|
88
|
+
C>java -ea t1
|
90
89
|
start t1.main
|
91
90
|
--------
|
92
91
|
Food: name=name01, priceNum=10, orderNum=100
|