首页 新闻 会员 周边

初学,希望给解释解释

0
悬赏园豆:5 [待解决问题]

 用SET存放对象。利用面向对象的思想,创建以下类:

Person类,包含Person的姓名和身份证号码。

① 请创建三个对象,放在HashSet中:

   姓名 张三

   身份证号  12310000

   姓名 李四

   身份证号  12320000

   姓名 王五

   身份证号  12330000

② 再创建对象:

   姓名 张三

   身份证号  12310000

能放入到刚才创建的HashSet中么?

③ 把集合中的元素打印出来。

④ TreeSet存放上面三个人,要求按照身份证号排序,打印出来。能够把上面步骤中创建的对象放到这个TreeSet中么。

使用HashSet要覆盖hashCode()方法, equals()方法

打印集合内的元素,要覆盖toString()方法。

使用TreeSet要实现Comparable接口。

   

我自己把代码写了。要求也满足了。步骤2都无法插入打印出来

不是太明白,以下是我的代码:

//这是hashset中重写的函数:

 public boolean equals(Object p)
  {
  if(p instanceof Person){
   if(this==p)
   {
    System.out.println("##同地址对象##");
    return false;//同一个对象,地址相同,重复!!!返回错误;
   }
  }
  System.out.println("###非person对象or不同对象##");
  return true;
  }
  public int hashCode()
  {
   System.out.println("##键值判断##");
   return (name+ID).hashCode();
  }

这是结果:

##键值判断##
##键值判断##
##键值判断##
##键值判断##
###非person对象or不同对象##
姓名张三
身份证号12310000
姓名李四
身份证号12320000
姓名王五
身份证号12330000

、、、、、

 

这是treeset中接口定义

public int compareTo(Object o) {
  // TODO Auto-generated method stub
  System.out.println("****比较操作****");
  Person2 p2=(Person2) o;
  int result=(ID>p2.ID?1:ID==p2.ID?0:-1);
  return result;
 }

结果:

****比较操作****
****比较操作****
****比较操作****
****比较操作****
****比较操作****
****比较操作****
姓名张三
身份证号12310000
姓名李四
身份证号12320000
姓名王五
身份证号12330000

 

求解结果为啥会这样,,,,就是相应函数的被调用次数!!!!???

邗影的主页 邗影 | 初学一级 | 园豆:73
提问于:2013-04-23 20:02
< >
分享
所有回答(1)
0

HashSet无序,不能放入相同的对象

寻梦丄天涯 | 园豆:248 (菜鸟二级) | 2013-04-24 09:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册