1

我有一个基于以下结构的嵌套树形图,然后它从“2”继续:{具有相同的结构..

http://pastebin.com/uKwAVz5L

如您所见,它已经按“c13”子项(剧集编号)排序。但是当我在我的应用程序中使用树形图时,它显示如下:

http://i50.tinypic.com/15o9vno.png

他们甚至没有远程排序..但我不明白为什么?:O

在我的android应用程序中使用它时同样的问题..

干杯

4

2 回答 2

1

以下是有关TreeMap的一些有价值的信息:

SortedMap 接口的基于红黑树的实现。此类保证映射将按键升序排序,根据键类的自然顺序(请参阅Comparable)或创建时提供的比较器排序,具体取决于使用的构造函数。

请注意,如果该排序映射要正确实现 Map 接口,则排序映射维护的排序(无论是否提供显式比较器)必须与 equals 一致。(参见 Comparable 或 Comparator 以获得与 equals 一致的精确定义。)这是因为 Map 接口是根据 equals 操作定义的,但是 map 使用它的 compareTo(或 compare)方法执行所有键比较,所以两个键从排序图的角度来看,这种方法认为相等的元素是相等的。已排序映射的行为是明确定义的,即使它的排序与 equals 不一致;它只是不遵守 Map 接口的一般合同。

您是否正确实施了上述方法?

Collections框架也有不同的实现(这里有一个概述)。如果 TreeMap 没有提供您想要的功能,您可以实现另一个并根据您的需要对其进行修改。

于 2013-02-10T10:05:56.230 回答
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
    }
}
于 2013-02-10T11:26:08.603 回答