読者です 読者をやめる 読者になる 読者になる

重複チェック

まずは、簡単なオブジェクトを定義

/**
 * ユーザクラス
 */
class User {
  /** ID */
  private String id;
  /** 名前 */
  private String name;
  /** メールアドレス */
  private String email;

  (Getter, Setterなどが定義されている)
}

で、単純にemailが重複していないかをチェックします。

class Test {
  public static void main(String[] args) {
    // メールアドレスset
    Set<String> set = new HashSet<String>();

    List<User> userList = (いろいろなUserクラスが入っているとする。)

    for (User user : userList) {
      String bufEmail = user.getEmail();
      if (set.contains(bufEmail)) {
        // 存在する場合
        System.out.println(bufEmail + "が重複しています。");
      } else {
        // 存在しない場合、setに追加
        set.add(bufEmail);
      }
    }
  }
}


次、どのidと重複しているかを表示する場合。

class Test2 {
  public static void main(String[] args) {
    // キー:email、値:idとなるmap
    Map<String, String> map = new HashMap<String, String>();

    List<User> userList = (いろいろなUserクラスが入っているとする。)

    for (User user : userList) {
      String bufEmail = user.getEmail();
      String tgtId = map.get(bufEmail);
      if (tgtId != null) {
        // 存在した場合
        System.out.println(bufEmail + "が" + tgtId + "と重複しています。");
      } else {
        // 存在しなかった場合、mapに追加
        map.put(bufEmail, user.getId());
      }
    }
  }
}


以上、変数名などテキトー。
また、Eclipseがやる気を起こしてくれないため、手書き+未コンパイル。
動作確認なし。
間違ってたら、そのうち直そうと思います。