質問編集履歴

2

HashMapについて試行しました。

2017/01/26 06:25

投稿

pingu612
pingu612

スコア13

test CHANGED
File without changes
test CHANGED
@@ -122,6 +122,88 @@
122
122
 
123
123
 
124
124
 
125
+ ※1/26追記
126
+
127
+ HashMapを使う方法を試行してみました。
128
+
129
+ 今度は削除分はうまく動作しましたが、「変更なし」分が取れていないみたいです。
130
+
131
+ キーが一致したifに入った場合、更にif文でValue値のチェックを行っており、そこでcontainsValueがtrueになればキーもValue値も一致することになるので、「変更なし」に追加すると記述したつもりです。
132
+
133
+ ご指摘あればよろしくお願いします。
134
+
135
+
136
+
137
+
138
+
139
+ ```Java
140
+
141
+ // 今期マスタをHashMapに詰める
142
+
143
+ Map<String, EmpPostBean> Thismap = new HashMap<String, EmpPostBean>();
144
+
145
+ for (EmpPostBean This : empPostList) {
146
+
147
+
148
+
149
+ // キーと値をセット
150
+
151
+ Thismap.put(This.getDscId(),This);
152
+
153
+ }
154
+
155
+
156
+
157
+ // 前期従業員マスタの要素がHashMapに含まれていれば変更なしリストに追加する
158
+
159
+ for (EmpPostBean This : empLastPostList) {
160
+
161
+
162
+
163
+ // キーが一致
164
+
165
+ if(Thismap.containsKey(This.getDscId())) {
166
+
167
+ // 役職コードが一致
168
+
169
+ if(Thismap.containsValue(This.getPostCode())){
170
+
171
+ //変更なしリストに追加
172
+
173
+ noChange.add(This);
174
+
175
+ System.out.println("変更なしの行数:" + noChange.size());
176
+
177
+
178
+
179
+ // 役職コードが不一致
180
+
181
+ }else{
182
+
183
+ // 変更ありリストに追加
184
+
185
+ Change.add(This);
186
+
187
+ System.out.println("変更ありの行数:" + Change.size());
188
+
189
+ }
190
+
191
+ }else{
192
+
193
+
194
+
195
+ Del.add(This);
196
+
197
+ System.out.println("削除の行数:" + Del.size());
198
+
199
+ }
200
+
201
+ }
202
+
203
+ ```
204
+
205
+
206
+
125
207
  ###試したこと
126
208
 
127
209
  ・比較を行う際、equalsでなく「==」で試してみる

1

発生している問題・エラーメッセージについて追記しました。

2017/01/26 06:25

投稿

pingu612
pingu612

スコア13

test CHANGED
File without changes
test CHANGED
@@ -24,13 +24,19 @@
24
24
 
25
25
  全行変更なしとして抽出されてしまいます。
26
26
 
27
- Excelから生成したListに問題はなさそうなので、比較方法が悪いのだと思います。
28
-
29
- for文のbreakが悪いのか、ループが回りすぎているような状態です。
30
-
31
- 初心者で解決方法を模索中ですが、ご教授いただけると助かります。
32
27
 
33
28
 
29
+ ※1/26追記
30
+
31
+ Excelから生成したListに問題があったようで、現在試すと
32
+
33
+ 仰る通りほとんど「削除」に入っていく状態です。
34
+
35
+ 「削除」部分のelse ifを削ると「変更なし」と「変更あり」については期待通りの動作をしています。
36
+
37
+ 「削除」(下期マスタにあって上期マスタにない行)の抽出方法を模索しているところです。
38
+
39
+ elseで対応してみたりしましたが、どうにもうまくいかない状況です。。
34
40
 
35
41
 
36
42