想要使用

时间:2017-11-11 19:10:20

标签: java class

所以目前我有两个课程,HumanFysikerHuman有两个参数,agename,而Fysiker我正在使用三个参数agenamestartyear

值得注意的是,我已FysikerHuman进行了扩展,我的问题是我希望在经过多年的努力后对其中的两个进行排序,这是完美的,但如果有两个{{ 1}}年龄相同,我想在Fysiker之后对它们进行排序。目前我已经使用了startyear,并且它在某种程度上正在发挥作用。问题是,有时,我们说我创建了100个对象,50 Collections.sort和50 Human,我可以得到这样的打印输出:

  

Saga,30年,1972年(Fysiker)Tomas,30年,1974年(Fysiker)Nils,   30年(人类)弗里达,30年,1969年(Fysiker,排序错了,这个   一个应该是第一个)

请注意,这是我使用Fysiker的打印输出,有没有办法让我得到应有的打印输出,我不介意介于两者之间的人,但我想要所有{ {1}}以正确的方式进行排序,看起来Collections.sort只是看着其中的两个,并对它们进行排序并继续前进。我的两个课程目前看起来像这样:

Fysiker

Collections.sort

1 个答案:

答案 0 :(得分:0)

更改if条件:

if(this.age == o.age && this instanceof Fysiker && o instanceof Fysiker)

if(this.age == o.age && o instanceof Fysiker)

为什么这种变化是必要的?

假设两个对象具有相同的年龄,然后您想要检查o是否属于Fysiker类型,当前编写代码时,总是评估为 true ,无论o是否属于Fysiker类型,因此无法评估o instanceof Fysiker

如果两个对象具有相同的年龄且if的类型为o,那么Fysiker块中的代码应仅执行执行}而不是由于&& this instanceof Fysiker而你的代码正在做什么。