首页javalistJava Collection - 如何在集合中找到重复条目

Java Collection - 如何在集合中找到重复条目

我们想知道如何在集合中找到重复条目。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {
  public static void main(String[] args) throws java.lang.Exception {
    List<Person> people = new ArrayList<Person>();
    people.add(new Person("J", "S"));
    people.add(new Person("J", "S"));
    people.add(new Person("J", "F"));
    people.add(new Person("J", "W"));
    people.add(new Person("J", "B"));
    Set<Object> seen = new HashSet<Object>();
    for (Person p : people) {

      Wrap wrap = new Wrap(p);
      if (seen.add(wrap)) {
        System.out.println(p + " is new");
      } else {
        System.out.println(p + " is a duplicate");
      }
    }
  }
}
class Wrap {
  Person thisPerson;
  public Wrap(Person p){
    thisPerson = p;
  }
  public int hashCode() {
    return thisPerson.getFirst().hashCode();
  }

  public boolean equals(Object o) {
    Wrap other = (Wrap) o;
    return other.wrapped().getFirst().equals(thisPerson.getFirst());
  }

  public Person wrapped() {
    return thisPerson;
  }
}
class Person {
  private String first;
  private String last;

  public String getFirst() {
    return first;
  }

  public String getLast() {
    return last;
  }

  public Person(String f, String l) {
    first = f;
    last = l;
  }

  public String toString() {
    return first + " " + last;
  }
}