排序树图不是真的有效

时间:2013-02-10 09:59:07

标签: java android sorting treemap

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

http://pastebin.com/uKwAVz5L

正如你所看到的,它已经按“c13”子项目(剧集编号)排序..但是当我在我的应用程序中使用树形图时,它会显示如下:

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

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

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

干杯

2 个答案:

答案 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
    }
}