所以,这可能只是我的一个逻辑错误,但我不确定如何。
@Override
public int compareTo( Activity t ) {
// currently we're naturally sorting by created, description, uuid
int createdComp = t.created.compareTo( created ); // created is an Instant
if ( createdComp == 0 ) {
int descComp = t.description.compareTo( description ); // description is a String
if ( descComp == 0 ) {
return t.id.compareTo( id ); // id is a UUID
} else {
return descComp;
}
}
return createdComp;
}
这是我的调试代码,对于我没有放的代码,它使用相同的Instant,并且UUID是随机生成的。
NavigableSet<Activity> ai = new TreeSet( Arrays.asList( i, g, h, f, a, b, c, e, d ) );
assertEquals( ai.size(), 9, "NaviSet Size is 9" );
for ( Activity act : ai ) {
System.out.println( act );
}
这是输出
1a8861eb-96c8-44ef-a9a5-ffbbeaf6b09e I 2014-02-01T16:00:42.102Z
3703a83c-04b4-4ed1-bdc6-b1da083900ea H 2014-02-01T16:00:42.102Z
1e68df32-18a5-4ce1-bb12-41dd3be97e3c G 2014-02-01T16:00:42.102Z
d73b0e03-fd01-4a70-a20f-500e2cf0b3dd F 2014-02-01T16:00:42.102Z
4aba5877-ed0e-4457-800c-522e3a2b72a3 E 2014-02-01T16:00:42.102Z
a90c7dae-ef9f-453b-9416-b7916ace4b5f D 2014-02-01T16:00:42.102Z
fdbfbb6b-d39b-4f15-a309-d105f0caa7a5 C 2014-02-01T16:00:42.101Z
2ed80ac0-768e-40c3-b03a-11b417e2893f B 2014-02-01T16:00:42.101Z
ef8b27db-6102-4ca5-8803-b63bea405be3 A 2014-02-01T16:00:42.098Z
为什么它们按降序排列?以及如何修复我的代码,以便它们默认按升序排列? (显然可导航的设置有asc / desc操作)
答案 0 :(得分:6)
你的所有比较都颠倒了你的逻辑 逻辑应始终是&#34;这与#34;。
相比例如,更改代码的这一行:
int createdComp = t.created.compareTo( created );
要:
int createdComp = created.compareTo(t.created);
答案 1 :(得分:1)
这是与作品相比的方式。
您应该将对象的值与传入值进行比较。
如果你反过来这样做,你就会以相反的顺序结束。