set是如何区分重复数据的
set不能存放重复数据,那么,set是如何区分两个数据是否重复呢?
public class Person{private int id;private String name;public Person(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}public class ListRemoveDu {public static void main(String[] args) {List<Person> list=new ArrayList();Set<Person> set=new HashSet();Person p1=new Person(1,"name1");Person p2=new Person(2,"name2");Person p3=new Person(3,"name3");Person p4=new Person(2,"name2");list.add(p1);list.add(p2);list.add(p3);list.add(p4);for (Person p : list) {set.add(p);}for (Person p : set) {System.out.println(p.getName());}}}public class Person{private int id;private String name;public boolean equals(Object p){if(((Person)p).getId()==this.getId()){return true;}else{return false;}}public int hashCode(){ return 0; }public Person(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}public class Person implements Comparable<Person>{private int id;private String name;public int compareTo(Person person) {if(this.getId()>person.getId()){return -1;}else if(this.getId()==person.getId()){return 0;}else{return 1;}}public Person(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}public class ListRemoveDu {public static void main(String[] args) {List<Person> list=new ArrayList();Set<Person> set=new TreeSet();Person p1=new Person(1,"name1");Person p2=new Person(2,"name2");Person p3=new Person(3,"name3");Person p4=new Person(2,"name2");list.add(p1);list.add(p2);list.add(p3);list.add(p4);for (Person p : list) {set.add(p);}for (Person p : set) {System.out.println(p.getName());}}}