java HashSet

来源:互联网 发布:ubuntu route设置 编辑:程序博客网 时间:2024/05/29 13:25

HashSet
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Person {
int id;
//int age;
String name;

public Person(int id, String name) {    super();    this.id = id;    this.name = name;}

@Override
public String toString() {
return “Person [id=” + id + “, name=” + name + “]”;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}

@Overridepublic boolean equals(Object obj) {    if (this == obj)        return true;    if (obj == null)        return false;    if (getClass() != obj.getClass())        return false;    Person other = (Person) obj;    if (id != other.id)        return false;    return true;}

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 static void main(String[] args) {

    Set set = new HashSet();    Person p1 = new Person(1,"小明");    Person p2 = new Person(2,"小李");    Person p3 = new Person(3,"小王");    Person p4 = new Person(4,"小张");    set.add(p1);    set.add(p2);    set.add(p3);    set.add(p4);    set.add(null);    System.out.println("集合长度:"+ set.size());    System.out.println(p1.hashCode());    System.out.println(p2.hashCode());    System.out.println(p3.hashCode());    System.out.println(p4.hashCode());    Iterator it = set.iterator();    while(it.hasNext()){        System.out.println(it.next());    }

}
}
运行结果:
集合长度:5
32
33
34
35
null
Person [id=3, name=小王]
Person [id=4, name=小张]
Person [id=1, name=小明]
Person [id=2, name=小李]
疑问:为什么不是按照id (1 2 3 4 )排序呢?