您的位置:首页 > 其它

集合框架五(hashCode 与Collections)

2016-07-20 10:46 429 查看
package us.google.www;

public class Person {

private String name;

private int age;

public Person() {

super();

// TODO Auto-generated constructor stub

}

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return “Person [name=” + name + “, age=” + age + “]”;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + age;

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public 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 (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

package us.google.www;

import java.util.HashSet;

public class HashtableDemo {

public static void main(String[] args) {
HashSet<Person> set = new HashSet<Person>();
Person p1 = new Person("小白",18);
Person p2 = new Person("小黑",19);
System.out.println("p1 hashcode()="+p1.hashCode());
System.out.println("p2 hashcode()="+p2.hashCode());
System.out.println("p1 的散列值="+p1.hashCode()%16);
System.out.println("p2 的散列值="+p2.hashCode()%16);
set.add(p1);
set.add(p2);
set.add(new Person("小白",18));//此对象的hashcode与p1的hashcode一样
System.out.println((new Person("小白",18)).hashCode()==p1.hashCode());
System.out.println(set.size());
//在修改属性后
p1.setAge(19);
System.out.println("p1 hashcode()="+p1.hashCode());
System.out.println("p1 的散列值="+p1.hashCode()%16);
set.remove(p1);
System.out.println(set.size());

}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: