所以目前我有两个课程,Human
和Fysiker
,Human
有两个参数,age
和name
,而Fysiker
我正在使用三个参数age
,name
和startyear
。
值得注意的是,我已Fysiker
与Human
进行了扩展,我的问题是我希望在经过多年的努力后对其中的两个进行排序,这是完美的,但如果有两个{{ 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
答案 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
块中的代码应仅执行执行1>}而不是由于&& this instanceof Fysiker
而你的代码正在做什么。