質問編集履歴

9

OLD

2021/10/31 06:22

投稿

THE_GUTS
THE_GUTS

スコア2

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

文法の修正

2021/10/31 06:22

投稿

THE_GUTS
THE_GUTS

スコア2

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

試したことを変更

2021/10/31 06:18

投稿

THE_GUTS
THE_GUTS

スコア2

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

試したことの更新

2021/10/31 05:11

投稿

THE_GUTS
THE_GUTS

スコア2

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

修正後のコーディング記載

2021/10/31 04:57

投稿

THE_GUTS
THE_GUTS

スコア2

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

誤字

2021/10/31 04:34

投稿

THE_GUTS
THE_GUTS

スコア2

test CHANGED
File without changes
test CHANGED
@@ -100,9 +100,7 @@
100
100
 
101
101
  mapA.put ("名前", "山田");
102
102
 
103
- mapB.put ("年齢", "20");
103
+ mapA.put ("年齢", "20");
104
-
105
-
106
104
 
107
105
  ListB.add(mapA)
108
106
 

3

誤字

2021/10/28 21:55

投稿

THE_GUTS
THE_GUTS

スコア2

test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
 
106
106
 
107
- ListA.add(mapA)
107
+ ListB.add(mapA)
108
108
 
109
109
 
110
110
 

2

誤字

2021/10/28 21:55

投稿

THE_GUTS
THE_GUTS

スコア2

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  mapA.put ("名前", "山田");
102
102
 
103
- mapA.put ("年齢", "20");
103
+ mapB.put ("年齢", "20");
104
104
 
105
105
 
106
106
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  mapB.put ("年齢", "50");
116
116
 
117
- ListA.add(mapB)
117
+ ListB.add(mapB)
118
118
 
119
119
 
120
120
 

1

誤字

2021/10/28 21:54

投稿

THE_GUTS
THE_GUTS

スコア2

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
- mapB.put ("性別", "男性");
99
+ mapA.put ("性別", "男性");
100
100
 
101
- mapB.put ("名前", "山田");
101
+ mapA.put ("名前", "山田");
102
102
 
103
- mapB.put ("年齢", "20");
103
+ mapA.put ("年齢", "20");
104
104
 
105
105
 
106
106
 
107
- ListA.add(mapB)
107
+ ListA.add(mapA)
108
108
 
109
109
 
110
110