ILoveZhuNan 2015-03-27 16:51 采纳率: 0%
浏览 1879

关于HashMap中元素修改的监控

如代码:
class MyPerson implements Comparable{
private int myAge;
public int getMyAge() {
return myAge;
}
public void setMyAge(int myAge) {
this.myAge = myAge;
}
public MyPerson(){
myAge = 0;
}
public MyPerson(int myAge){
this.myAge = myAge;
}
public int compareTo(MyPerson myperson){
return this.myAge - myperson.getMyAge();
}
public String toString() {
return "this people's age is " + myAge;
}
}
public class TreeSetTest {
public static void main(String[] argv){
TreeSet myTreeSet2 = new TreeSet(new myComparator());
MyPerson myPerson1 = new MyPerson(10);
MyPerson myPerson2 = new MyPerson(20);
myTreeSet2.add(myPerson1);
myTreeSet2.add(myPerson2);
myPerson1.setMyAge(30);
System.out.println(myTreeSet2);
}
}
执行后输出的为:
[this people's age is 20, this people's age is 30]
求问,HashSet是如何知道Person类的age变量被修改,及内部元素之间调用compareto函数的结果发生了变化?

  • 写回答

1条回答 默认 最新

  • danielinbiti 2015-03-28 08:32
    关注

    1、treeset只知道有person,是不可能关系person中的某个属性改变的。顺序在add进去的时候会进行排序,然后决定顺序。
    2、person2在person1前面,只可能是你的myComparator这个排序规则导致。在修改成age等于30前就已经决定了顺序。

    评论

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统