java如何根据类类型的arraylist中的两个元素(两列)对其进行排序
我有一个类型为'class'(Info)的arraylist(arrList)。类“Info”有两个名为“case”和“step”的长类型属性。我需要通过比较class Info中的两个属性来按升序对arraylist进行排序
//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
所以,这里我需要类似arraylist的大小写和步骤一起排序([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 ...
输出错误。帮帮我。提前谢谢
# 1 楼答案
最简单的方法是使信息实现具有可比性。然后,您只需实现compareTo函数,该函数处理案例,如果它们相同,则返回0;如果比较大于,则返回1;如果小于,则返回-1。而不仅仅是使用集合。排序(arrList)https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html
# 2 楼答案
假设您拥有java 8或更高版本,并进一步假设您拥有这两个属性的getter: