gpt4 book ai didi

java - 如何根据其中的两个元素(两列)对类型为 class 的数组列表进行排序

转载 作者:行者123 更新时间:2023-12-01 19:22:22 26 4
gpt4 key购买 nike

我有一个“class”(Info)类型的arraylist(arrList)。“Info”类有两个名为“case”和“step”的long类型属性。我需要通过比较类 Info 中的两个属性来按升序对数组列表进行排序。

//scrambled list
arrList={[#case,#step],[2,1],[1,4],[2,2],[1,2],[1,3],[1,1],[2,3],[2,4],.....}

//Output I need
arrList={[#case,#step],[1,1],[1,2],[1,3],[1,4],[2,1],[2,2],[2,3],[2,4],...}

我会说得更清楚。例如,

案例 1 具有步骤 1,2,3,4,案例 2 具有步骤 1,2,3,4

所以,这里我需要像案例和步骤一起排序的数组列表([1,1],[1,2],[1,3]...)

我尝试使用下面给出的代码。

        for (int i = 0; i < arrList.size(); i++) {
for (int j = i+1; j < arrList.size(); j++) {
long tmp1Case=arrList.get(i).getCase_ID();//case id value --i
long tmp1Step=arrList.get(i).getStep_ID();//step id value --i

long tmp2Case=arrList.get(j).getCase_ID();//case id value --j
long tmp2Step=arrList.get(j).getStep_ID();//step id value --j

if (tmp1Case>=tmp2Case && tmp1Step>tmp2Step ) {
Info tmp = new Info();
tmp = arrList.get(i);

arrList.get(i).setStep_ID(arrList.get(j).getStep_ID());
arrList.get(i).setCase_ID(arrList.get(j).getCase_ID_ID());

arrList.get(j).setStep_ID(tmp.getStep_ID());
arrList.get(j).setCase_ID(tmp.getCase_ID());
}
}

}

//printing the arraylist ...

输出错误。帮帮我。提前致谢

最佳答案

最简单的方法是使 Info 实现具有可比性。然后你只需要实现compareTo函数来处理你的情况,如果它们相同则返回0,如果比较大于则返回1,如果小于则返回-1。比你可以只使用 Collections.sort(arrList) https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html

关于java - 如何根据其中的两个元素(两列)对类型为 class 的数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59344729/

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