我在Android应用中使用了一个类,声明如下:
public static class MyData implements Comparable<MyData>
{
public MyEnum myEnum;
@Override
public int compareTo(MyData another)
{
if(this.myEnum.equals(MyEnum.Value1))
{
return 1;
}
if(another.myEnum.equals(MyEnum.Value1))
{
return -1;
}
if(this.myEnum.equals(MyEnum.Value2))
{
return 1;
}
if(another.myEnum.equals(MyEnum.Value2))
{
return -1;
}
return 0;
}
}
我定义了一个列表:List<MyData> myList = new LinkedList<MyData>();
将项目添加到列表后,我致电:Collections.sort(myList)
问题在于,当我调试时,我看到在调用sort方法后调用compareTo方法,但是即使它应该也不会输入第一个方法。我甚至将Eclipse中的布尔表达式放在&#34;表达式&#34; view并返回true,但代码只是跳转到return 0;
,列表没有像我想的那样排序。
为什么?
答案 0 :(得分:1)
最后我将该枚举类成员更改为使用Enum中的序数值初始化的int成员。
然后compareTo
方法改变如下:
@Override
public int compareTo(MyData another)
{
Integer myVal = this.intVal;
Integer otherVal = another.intVal;
return myVal.compareTo(otherVal);
}