我有一个基于以下结构的嵌套树图,然后它继续从“2”开始:{具有相同的结构..
正如你所看到的,它已经按“c13”子项目(剧集编号)排序..但是当我在我的应用程序中使用树形图时,它会显示如下:
http://i50.tinypic.com/15o9vno.png
他们甚至没有远程排序..但我不明白为什么? :o
在我的Android应用程序中使用它时遇到同样的问题..
干杯
答案 0 :(得分:1)
以下是TreeMap的一些重要信息:
基于Red-Black树的SortedMap接口实现。 此 class保证地图按升序键排序,排序 根据密钥类的自然顺序(参见 Comparable ), 或者在创建时提供的比较器,具体取决于哪个 使用构造函数。
请注意,由排序地图维护的排序(无论是否为 提供明确的比较器)必须与equals if一致 这个有序映射是为了正确实现Map接口。 (看到 可比较或比较器的精确定义与 等于。)这是因为Map接口是根据定义的 等于操作,但是地图使用它执行所有关键比较 compareTo(或compare)方法,因此两个被认为相等的键 从排序映射的角度来看,这种方法是相同的。该 即使排序的顺序是有序的,也可以很好地定义有序映射的行为 与平等不一致;它只是没有遵守一般合同 Map接口。
您是否正确实施了上述方法?
Collections框架也有不同的实现(概述是here)。如果TreeMap没有提供您想要的功能,您可以实现另一个功能并根据需要进行修改。
答案 1 :(得分:0)
尝试使用比较器:
TreeMap map = new TreeMap<Obj1, Obj2>(new ObjComparator());
private class ObjComparator() implements Comparator<Obj1> {
public int compareTo(Obj1 o1, Obj1 o2) {
return o1.compareTo(o2); // do your logic here
}
}