package cn.set; importjava.util.HashSet; importjava.util.Iterator;
// 往hashSet集合中存入自定义对象.如果姓名和年龄相同的为同一个人,删除 class Person{ private String name; private int age; public Person(String name,int age){ this.setName(name); this.setAge(age); } public int hashCode(){ //hashCode()有什么用?是在什么时候调用? return name.hashCode()+age; //返回name.hashCode()+age;又是什么意思啊? } //看不明白能不能给解释一下? public boolean equals(Object obj){ //判断对象是否相同 if(!(obj instanceof Person)){ return false; } Person p=(Person)obj;
//System.out.println(this.name+".........."+p.name);
returnthis.name.equals(p.name)&&this.age==p.age; } public void setName(String name){ this.name=name; } public void setAge(int age){ this.age=age; } public String getName(){ returnname; } public int getAge(){ return age; } } public classHashSetDemo1 { public static void main(String[] args){ HashSet hset=new HashSet(); hset.add(new Person("黄晓明",21)); hset.add(new Person("周星驰",23)); hset.add(new Person("陈小春",22)); hset.add(new Person("周星驰",23)); hset=deleteSameElement(hset); //把去除重复元素后的集合赋给hset for(Iteratorit=hset.iterator();it.hasNext();){ Person p=(Person)it.next(); sop(p.getName()+"==="+p.getAge()); } } public static HashSet deleteSameElement(HashSethash){ HashSet haha=new HashSet(); for(Iteratorit=hash.iterator();it.hasNext();){ Object obj=it.next(); if(!(haha.contains(obj))){ haha.add(obj); } } return haha; } public static void sop(Object obj){ System.out.println(obj); } } 各位大侠,今天看视频这段代码有点费解,就是红色字体那段,hashCode是怎么用的?程序在运行时什么时候调用它啊?能不能给解释一下,看不懂,谢谢! |