質問: new HashMap(); for (EmpPostBean This : empPostList) { // キーと値をセット Thismap.put(This.getDscId(),This); } // 前期従業員マスタの要素がHashMapに含まれていれば変更なしリストに追加する for (EmpPostBean This : empLastPostList) { // キーが一致 if(Thismap.containsKey(This.getDscId())) { // 役職コードが一致 if(Thismap.containsValue(This.getPostCode())){ //変更なしリストに追加 noChange.add(This); System.out.println("変更なしの行数:" + noChange.size()); // 役職コードが不一致 }else{ // 変更ありリストに追加 Change.add(This); System.out.println("変更ありの行数:" + Change.size()); } }else{ Del.add(This); System.out.println("削除の行数:" + Del.size()); } } ``` ### 試したこと ・比較を行う際、equalsでなく「==」で試してみる ・HashMapを使って比較してみる →キー指定が分からず断念しています。
回答: 1行ごとに各if条件をチェックするので、1行目でIDが一致しなければ、仮にほかの行で一致するものがあったとしても「削除」と判定されてしまいます。 なのでこの方法でやるとしたら、内側のforを抜けた後で削除リストへの追加を行うべきです。 「empPostListからの要素で、empLastPostListにIDが同じものがなかった」という状態ですから。 HashMapのキー値が思いつかなかったということですが、変更・追加・削除の基準が従業員IDなので、それをキーにしてしまえばいいのです。