Java tutorial
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; } }