Java class 可比较不起作用
Java class comparable does not work
我在 Android 应用程序中使用了 class,声明如下:
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)
问题是,当我调试时,我看到 compareTo 方法在调用 sort 方法之后被调用,但是它没有进入第一个,即使它应该进入。我什至将 Eclipse 中的布尔表达式放在 "Expressions" 视图中,它返回 true,但代码只是跳转到 return 0;
并且列表没有按照我想要的方式排序。
这是为什么?
最终我将该枚举 class 成员更改为一个 int 成员,该成员使用枚举中的序号值进行了初始化。
然后compareTo
方法改成这样:
@Override
public int compareTo(MyData another)
{
Integer myVal = this.intVal;
Integer otherVal = another.intVal;
return myVal.compareTo(otherVal);
}
我在 Android 应用程序中使用了 class,声明如下:
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)
问题是,当我调试时,我看到 compareTo 方法在调用 sort 方法之后被调用,但是它没有进入第一个,即使它应该进入。我什至将 Eclipse 中的布尔表达式放在 "Expressions" 视图中,它返回 true,但代码只是跳转到 return 0;
并且列表没有按照我想要的方式排序。
这是为什么?
最终我将该枚举 class 成员更改为一个 int 成员,该成员使用枚举中的序号值进行了初始化。
然后compareTo
方法改成这样:
@Override
public int compareTo(MyData another)
{
Integer myVal = this.intVal;
Integer otherVal = another.intVal;
return myVal.compareTo(otherVal);
}