本帖最后由 FFF 于 2013-12-23 23:23 编辑
- public static void main(String[] args) {
- HashSet<student> hs = new HashSet<student>();
- student st =new student("Java",12);
- student st1 =new student("Java",13);
- student st2 =new student("Java",14);
- hs.add(st);//存入对象
- hs.add(st1);
- hs.add(st2);
- st.age=13;
- for(student s : hs){//迭代输出Hs中的对象的age值
- System.out.println(s.age);
- }
- System.out.println("st--"+st.hashCode()+"--st1--"+st1.hashCode());//输出两者的HashCode
- System.out.println("st与st1的HashCode比较结果为:"+(st.hashCode()==st1.hashCode()));//两者为真
- }
- }
- class student{//学生对象
- String name;
- int age ;
- student(String name,int age){
- this.name=name;
- this.age=age;
- }
- public int hashCode(){//重写hashCode方法
- return name.hashCode()+age*10;
- }
复制代码
输出:
13
13
14
st--2301636--st1--2301636
st与st1的HashCode比较结果为:true
为什么st与st1的HashSet可以一样呢?不是应该在HashSet中是不存在hsahCode值相同的对象的吗?
聪明的骚年,你知道为什么吗?
|
|