質問するログイン新規登録

質問編集履歴

2

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

2017/01/26 06:25

投稿

pingu612
pingu612

スコア13

title CHANGED
File without changes
body CHANGED
@@ -60,6 +60,47 @@
60
60
 
61
61
  ```
62
62
 
63
+ ※1/26追記
64
+ HashMapを使う方法を試行してみました。
65
+ 今度は削除分はうまく動作しましたが、「変更なし」分が取れていないみたいです。
66
+ キーが一致したifに入った場合、更にif文でValue値のチェックを行っており、そこでcontainsValueがtrueになればキーもValue値も一致することになるので、「変更なし」に追加すると記述したつもりです。
67
+ ご指摘あればよろしくお願いします。
68
+
69
+
70
+ ```Java
71
+ // 今期マスタをHashMapに詰める
72
+ Map<String, EmpPostBean> Thismap = new HashMap<String, EmpPostBean>();
73
+ for (EmpPostBean This : empPostList) {
74
+
75
+ // キーと値をセット
76
+ Thismap.put(This.getDscId(),This);
77
+ }
78
+
79
+ // 前期従業員マスタの要素がHashMapに含まれていれば変更なしリストに追加する
80
+ for (EmpPostBean This : empLastPostList) {
81
+
82
+ // キーが一致
83
+ if(Thismap.containsKey(This.getDscId())) {
84
+ // 役職コードが一致
85
+ if(Thismap.containsValue(This.getPostCode())){
86
+ //変更なしリストに追加
87
+ noChange.add(This);
88
+ System.out.println("変更なしの行数:" + noChange.size());
89
+
90
+ // 役職コードが不一致
91
+ }else{
92
+ // 変更ありリストに追加
93
+ Change.add(This);
94
+ System.out.println("変更ありの行数:" + Change.size());
95
+ }
96
+ }else{
97
+
98
+ Del.add(This);
99
+ System.out.println("削除の行数:" + Del.size());
100
+ }
101
+ }
102
+ ```
103
+
63
104
  ###試したこと
64
105
  ・比較を行う際、equalsでなく「==」で試してみる
65
106
  ・HashMapを使って比較してみる

1

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

2017/01/26 06:25

投稿

pingu612
pingu612

スコア13

title CHANGED
File without changes
body CHANGED
@@ -11,10 +11,13 @@
11
11
  ###発生している問題・エラーメッセージ
12
12
  思いつく方法で比較をしてみましたが、
13
13
  全行変更なしとして抽出されてしまいます。
14
- Excelから生成したListに問題はなさそうなので、比較方法が悪いのだと思います。
15
- for文のbreakが悪いのか、ループが回りすぎているような状態です。
16
- 初心者で解決方法を模索中ですが、ご教授いただけると助かります。
17
14
 
15
+ ※1/26追記
16
+ Excelから生成したListに問題があったようで、現在試すと
17
+ 仰る通りほとんど「削除」に入っていく状態です。
18
+ 「削除」部分のelse ifを削ると「変更なし」と「変更あり」については期待通りの動作をしています。
19
+ 「削除」(下期マスタにあって上期マスタにない行)の抽出方法を模索しているところです。
20
+ elseで対応してみたりしましたが、どうにもうまくいかない状況です。。
18
21
 
19
22
  ###該当のソースコード
20
23
  ```Java