質問編集履歴
9
OLD
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
### 該当のソースコード
|
67
|
+
### 該当のソースコード【OLD】
|
68
68
|
|
69
69
|
|
70
70
|
|
8
文法の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -192,13 +192,17 @@
|
|
192
192
|
|
193
193
|
|
194
194
|
|
195
|
+
//間違った実装によりコメントアウト
|
196
|
+
|
195
|
-
mapB.put("性別", "女性");
|
197
|
+
//mapB.put("性別", "女性");
|
196
|
-
|
198
|
+
|
197
|
-
mapB.put("名前", "田中");
|
199
|
+
//mapB.put("名前", "田中");
|
198
200
|
|
199
201
|
mapB.put("年齢", "50");
|
200
202
|
|
201
|
-
ListA.add(mapB);
|
203
|
+
//ListA.add(mapB);
|
204
|
+
|
205
|
+
|
202
206
|
|
203
207
|
|
204
208
|
|
7
試したことを変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -226,6 +226,8 @@
|
|
226
226
|
|
227
227
|
### 試したこと
|
228
228
|
|
229
|
+
```java
|
230
|
+
|
229
231
|
Map<String, Object> mapCompare = new HashMap<String, Object>();
|
230
232
|
|
231
233
|
Map<String, Object> motoMap = new HashMap<String, Object>();
|
@@ -248,6 +250,6 @@
|
|
248
250
|
|
249
251
|
}
|
250
252
|
|
251
|
-
|
253
|
+
```
|
252
254
|
|
253
255
|
### 補足情報(FW/ツールのバージョンなど)
|
6
試したことの更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -226,9 +226,27 @@
|
|
226
226
|
|
227
227
|
### 試したこと
|
228
228
|
|
229
|
-
|
229
|
+
Map<String, Object> mapCompare = new HashMap<String, Object>();
|
230
|
+
|
230
|
-
|
231
|
+
Map<String, Object> motoMap = new HashMap<String, Object>();
|
232
|
+
|
233
|
+
|
234
|
+
|
231
|
-
|
235
|
+
for (int j = 0; j < ListA.size(); j++) {
|
236
|
+
|
237
|
+
motoMap.putAll(ListA.get(j));
|
238
|
+
|
239
|
+
for (int i = 0; i < ListB.size(); i++) {
|
240
|
+
|
241
|
+
mapCompare.putAll(ListB.get(i));
|
242
|
+
|
243
|
+
if (!(motoMap.equals(mapCompare))) {
|
244
|
+
|
245
|
+
}
|
246
|
+
|
247
|
+
}
|
248
|
+
|
249
|
+
}
|
232
250
|
|
233
251
|
|
234
252
|
|
5
修正後のコーディング記載
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
```
|
18
18
|
|
19
|
+
①
|
20
|
+
|
19
21
|
下記の書き方だと
|
20
22
|
|
21
23
|
ListA[0]とListB[0]
|
@@ -48,6 +50,14 @@
|
|
48
50
|
|
49
51
|
|
50
52
|
|
53
|
+
②
|
54
|
+
|
55
|
+
ListAをListBとしてコピーしたのですが、
|
56
|
+
|
57
|
+
ListAの要素を書き換えるとListBも更新されます。(意図しない実装になっています。)
|
58
|
+
|
59
|
+
サイト等を見てディープコピーとしてコーディングしているのですが、なぜこうなるのかが分かりません。
|
60
|
+
|
51
61
|
|
52
62
|
|
53
63
|
```
|
@@ -138,14 +148,86 @@
|
|
138
148
|
|
139
149
|
|
140
150
|
|
151
|
+
### 修正後のソースコード
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
```java
|
156
|
+
|
157
|
+
List<Map<String, Object>> ListA = new ArrayList<Map<String, Object>>();
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
Map<String, Object> mapA = new HashMap<String, Object>();
|
162
|
+
|
163
|
+
Map<String, Object> mapB = new HashMap<String, Object>();
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
// ListAに格納処理
|
168
|
+
|
169
|
+
mapA.put("性別", "男性");
|
170
|
+
|
171
|
+
mapA.put("名前", "山田");
|
172
|
+
|
173
|
+
mapA.put("年齢", "20");
|
174
|
+
|
175
|
+
ListA.add(mapA);
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
mapB.put("性別", "女性");
|
180
|
+
|
181
|
+
mapB.put("名前", "田中");
|
182
|
+
|
183
|
+
mapB.put("年齢", "25");
|
184
|
+
|
185
|
+
ListA.add(mapB);
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
// リストAを複製
|
190
|
+
|
191
|
+
List<Map<String, Object>> ListB = new ArrayList<Map<String, Object>>(ListA);
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
mapB.put("性別", "女性");
|
196
|
+
|
197
|
+
mapB.put("名前", "田中");
|
198
|
+
|
199
|
+
mapB.put("年齢", "50");
|
200
|
+
|
201
|
+
ListA.add(mapB);
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
// ListAとListBを比較し、異なるものを条件分岐させる
|
206
|
+
|
207
|
+
for (Map<String, Object> map1 : ListA) {
|
208
|
+
|
209
|
+
for (Map<String, Object> map2 : ListB) {
|
210
|
+
|
211
|
+
if (!(map1.equals(map2))) {
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
// DB更新処理
|
216
|
+
|
217
|
+
}
|
218
|
+
|
219
|
+
}
|
220
|
+
|
221
|
+
}
|
222
|
+
|
223
|
+
```
|
224
|
+
|
225
|
+
|
226
|
+
|
141
227
|
### 試したこと
|
142
228
|
|
143
229
|
|
144
230
|
|
145
|
-
Listの要素ひとつひとつを取り出し比較する方法も考えてみましたが
|
146
|
-
|
147
|
-
格納する要素が多くなるほど処理が多くなりそうなため採用しませんでいた。
|
148
|
-
|
149
231
|
|
150
232
|
|
151
233
|
|
4
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -100,9 +100,7 @@
|
|
100
100
|
|
101
101
|
mapA.put ("名前", "山田");
|
102
102
|
|
103
|
-
map
|
103
|
+
mapA.put ("年齢", "20");
|
104
|
-
|
105
|
-
|
106
104
|
|
107
105
|
ListB.add(mapA)
|
108
106
|
|
3
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
List
|
107
|
+
ListB.add(mapA)
|
108
108
|
|
109
109
|
|
110
110
|
|
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
|
101
101
|
mapA.put ("名前", "山田");
|
102
102
|
|
103
|
-
map
|
103
|
+
mapB.put ("年齢", "20");
|
104
104
|
|
105
105
|
|
106
106
|
|
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
mapB.put ("年齢", "50");
|
116
116
|
|
117
|
-
List
|
117
|
+
ListB.add(mapB)
|
118
118
|
|
119
119
|
|
120
120
|
|
1
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,15 +96,15 @@
|
|
96
96
|
|
97
97
|
List<Map<String,Object>> ListB new ArrayList<Map<String,Object>>();
|
98
98
|
|
99
|
-
map
|
99
|
+
mapA.put ("性別", "男性");
|
100
100
|
|
101
|
-
map
|
101
|
+
mapA.put ("名前", "山田");
|
102
102
|
|
103
|
-
map
|
103
|
+
mapA.put ("年齢", "20");
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
ListA.add(map
|
107
|
+
ListA.add(mapA)
|
108
108
|
|
109
109
|
|
110
110
|
|