在Java中用double对double的ArrayList和String的ArrayList进行排序

时间:2017-03-26 23:26:17

标签: java sorting arraylist

我有一个arraylist的arraylist,它包含一个字符串和一个整数,它看起来像:

ArrayList<ArrayList> l= {{1.02,"string1"},{0.33,"string2"},{1.15,"string3"},}; 

我希望按双号的顺序对其进行排序,如下所示:

ArrayList<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);
    }
}

1 个答案:

答案 0 :(得分:0)

你犯了三个错误:

  • 列表中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);       
}

Demo.