我已经阅读了一些关于自定义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();
}
}
帮帮我,你是我唯一的希望。
答案 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
作为旁注,关于编码实践:
character
令人困惑,您应该考虑重命名它。character
是一个类,而不是一个字段。