所以,这可能只是我的一个逻辑错误,但我不知道如何.
@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.
NavigableSetai = 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操作)
你的所有比较中都颠倒了你的逻辑.
逻辑应始终是"与此相比".
例如,更改代码的这一行:
int createdComp = t.created.compareTo( created );
至:
int createdComp = created.compareTo(t.created);