用SET存放对象。利用面向对象的思想,创建以下类:
Person类,包含Person的姓名和身份证号码。
① 请创建三个对象,放在HashSet中:
姓名 张三
身份证号 12310000
姓名 李四
身份证号 12320000
姓名 王五
身份证号 12330000
② 再创建对象:
姓名 张三
身份证号 12310000
能放入到刚才创建的HashSet中么?
③ 把集合中的元素打印出来。
④ 用TreeSet存放上面三个人,要求按照身份证号排序,打印出来。能够把上面步骤②中创建的对象放到这个TreeSet中么。
l 使用HashSet要覆盖hashCode()方法, equals()方法
l 打印集合内的元素,要覆盖toString()方法。
l 使用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
求解结果为啥会这样,,,,就是相应函数的被调用次数!!!!???
HashSet无序,不能放入相同的对象