本帖最后由 H._张_♂ 于 2014-4-11 14:24 编辑
- import java.util.HashSet;
- import java.util.Set;
- public class HashCodeTest {
- /**
- * 这是一个要用来测试HashCode的类
- * @author 张三
- * @version v1.1
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Set<Person> set = new HashSet<Person>();
- Person p1=new Person(10);
- Person[] p = new Person[2];
- set.add(p1);//set中一个元素
- p1.setAge(11);//p1的age改成11
- System.out.println(set.remove(p1));//移走P1,输出false,说明p1没有被移走,这是为什么?
- System.out.println(set.contains(p1));//输出false,集合中不包含p1,说明p1不在集合中,p1究竟去哪里了?
- System.out.println(set.size());//结果为1.说明p1没有被移走,究竟存的是谁?怎么拿出来?
- p= set.toArray(p);//将set中的所有元素变成p数组
- System.out.println(p[0]);//输出为11,说明set集合中还有年龄为11的这个对象
- }
- }
- class Person {
- int age;
- Person(int age){
- this.age=age;
- }
- public void setAge(int age){
- this.age=age;
- }
- @Override
- public boolean equals(Object obj) {
- Person p = (Person)obj;
- if(this.age==p.age){
- return true;
- }
- return false;
- }
- @Override
- public int hashCode(){
- return age+age*34;}
- @Override
- public String toString(){
- return String.valueOf("person"+age);
- }
-
- }
复制代码
|