gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:10:02 24 4
gpt4 key购买 nike

我已经阅读了一些关于自定义 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;
}
}
}

主要 Activity 是一堆东西。处理 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();
}
}

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

最佳答案

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 是一个类而不是一个字段。

关于java - Java中不排序的自定义对象数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com