Java中的自定义对象数组排序,不排序

时间:2012-03-23 20:46:06

标签: java android sorting

我已经阅读了一些关于自定义Arrays.sort的教程,以及很多谷歌搜索,但我错过了答案。现在Arrays.sort(charList)什么都不做。这是我的代码的样子。

public class character implements Comparable<character>{

//public vars
public String charName;
public int initModifier;
public int initRoll;
public int secondInit;
/* ... getters, setters, other vars .. */
    @Override
    public int compareTo(character another) {
        int compareInit = ((character) another).getTotalInit();
        int comp = this.totalInit - compareInit;
        int compareSecondInit = ((character) another).getTotalInit();

        if (comp != 0)
        {
            return comp;
        }
        else
        {
            return this.secondInit - compareSecondInit;
        }
    }
}

主要活动是一堆东西。处理arrays.sort的部分如下:

//add a character to the array.
public void addResults(character c)
{
    debugInt++; //using this to debug
    if(debugInt==3)
    {
        Log.d(tag,charList[0].charName); //always prints the first object entered
        Log.d(tag,charList[1].charName); //always prints the second object entered
    }
    if (playersPerTurn<charLimit)
    {
        charList[playersPerTurn]=c;
        Arrays.sort(charList,0,playersPerTurn); 
        playersPerTurn++;
        updateDisplay();
    }
}

帮帮我,你是我唯一的希望。

1 个答案:

答案 0 :(得分:2)

int compareSecondInit = ((character) another).getTotalInit();

你可能想要getSecondInit()
你的compareTo()有这个错误是不一致的 - 因此结果是不确定的。

例如:

element1:
totalInit = 1
secondInit = 2
element2:
totalInit = 1
secondInit = 2

element1.compareTo(element2) == 2 - 1 == 1
element2.compareTo(element1) == 2 - 1 == 1

作为旁注,关于编码实践:

  1. 命名一个类character令人困惑,您应该考虑重命名它。
  2. 在java中,惯例是类名以大写字母开头。它将帮助其他程序员轻松理解character是一个类,而不是一个字段。