Java中按双精度对双精度和字符串的ArrayList的ArrayList排序
我有一个arraylist of arraylist,其中包含一个字符串和一个整数。它看起来像:Java中按双精度对双精度和字符串的ArrayList的ArrayList排序,java,sorting,arraylist,Java,Sorting,Arraylist,我有一个arraylist of arraylist,其中包含一个字符串和一个整数。它看起来像: ArrayList<ArrayList> l= {{1.02,"string1"},{0.33,"string2"},{1.15,"string3"},}; arraylistl={{1.02,“string1”},{0.33,“string2”},{1.15,“string3”},}; 我想按照双倍数字的顺序对其进行排序
ArrayList<ArrayList> l= {{1.02,"string1"},{0.33,"string2"},{1.15,"string3"},};
arraylistl={{1.02,“string1”},{0.33,“string2”},{1.15,“string3”},};
我想按照双倍数字的顺序对其进行排序,如下所示:
ArrayList<ArrayList> l= {{0.33,"string2"},{1.02,"string1"},{1.15,"string3"},};
ArrayList l={{0.33,“string2”},{1.02,“string1”},{1.15,“string3”},};
我写了这段代码,但它不适合我,我不知道问题出在哪里:
public void listSorting(ArrayList<ArrayList> l){
int min=0;
for(int i=0;i<l.size();i++){
min=i;
for(int j=i+1;j<l.size();j++){
if((double)(l.get(i).get(0)) < (double)(l.get(min).get(0))){
min=j;
}
}
ArrayList temp=new ArrayList<>();
temp.add(l.get(i));
l.get(i).add(l.get(min));
l.get(min).add(temp);
}
}
公共作废列表排序(ArrayList l){
int min=0;
对于(int i=0;i您犯了三个错误:
- 您列表中的
double
索引为零,而不是一
- 内部循环需要将
min
项与索引j
处的项进行比较,而不是i
- 交换两个类型为
ArrayList
的元素时,不要创建新的数组列表
以下是修复代码的方法:
for(int i=0;i<l.size();i++){
min=i;
for(int j=i+1;j<l.size();j++){
if((double)(l.get(j).get(0)) < (double)(l.get(min).get(0))){
min=j;
}
}
ArrayList temp=l.get(i);
l.set(i, l.get(min));
l.set(min, temp);
}
for(int i=0;首先,您应该使用or。其次,对于此类数据,这是错误的数据类型。请使用ArrayList
尝试使用调试器。.get(1)
你认为这有什么作用?你必须使用comparator类来根据object属性进行排序。@4演示如何使用Collections.sort在这种情况下?Ahamed how?@Katty你需要更具体地说明“不起作用”部分。arraylist不起作用sorted@Kattyl.get(i).get(0)
应该是l.get(j).get(0)
。否,因为我们处于未定义j的第1个循环中