Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中按双精度对双精度和字符串的ArrayList的ArrayList排序_Java_Sorting_Arraylist - Fatal编程技术网

Java中按双精度对双精度和字符串的ArrayList的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 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= {{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@Katty
l.get(i).get(0)
应该是
l.get(j).get(0)
。否,因为我们处于未定义j的第1个循环中