如何在不使用Java集合的情况下在数组列表中进行排序

时间:2015-07-13 07:17:33

标签: java sorting arraylist

ArrayList < Integer > arraylist = new ArrayList < Integer > ();

arraylist.add(10010);
arraylist.add(5);
arraylist.add(4);
arraylist.add(2);

for (int i = 0; i < arraylist.size(); i++) {

    for (int j = arraylist.size() - 1; j > i; j--) {
        if (arraylist.get(i) > arraylist.get(j)) {

            int tmp = arraylist.get(i);
            arraylist.get(i) = arraylist.get(i);
            arraylist.get(j) = tmp;

        }

    }

}
for (int i: arraylist) {
    System.out.println(i);
}

交换时出错,LHS应该是可变的。我明白了。 Set方法在这里工作,但我不想使用。 有没有办法不使用set方法呢? 非常感谢帮助。

9 个答案:

答案 0 :(得分:7)

arraylist.get(i)= arraylist.get(i);
arraylist.get(j) =tmp;

您无法为方法调用分配值。正如编译器告诉你的那样,赋值的左侧必须是变量。

使用set方法:

arraylist.set(i,arraylist.get(j));
arraylist.set(j,tmp);
  

有没有办法不使用set方法呢?

没有。除非您希望将ArrayList转换为数组,否则请对数组进行排序,并使用已排序的数组更新ArrayList。

答案 1 :(得分:2)

交换到列表值的最短方法如下:

arraylist.set(i, arraylist.set(j, arraylist.get(i)));

您可以利用set方法返回先前值的事实。此算法以Collections.swap标准方法实现,因此您可以使用它:

Collections.swap(arraylist, i, j);

答案 2 :(得分:2)

  Integer[] list={3,5,100,8,17,19};

   for(int i=0;i<list.length;i++){

       for(int j=i+1;j<list.length;j++){

           Integer tempI=list[i];
           Integer tempJ=list[j];

           if(tempI>tempJ){
             list[i]=tempJ;
             list[j]= tempI;

           }

           }
       }

   for(Integer a:list){
       System.out.println(""+a);
   }

答案 3 :(得分:1)

您无法直接为ArrayList Index分配值。您必须使用set()方法。 更改您的代码如下:

  ArrayList < Integer > arraylist = new ArrayList < Integer > ();

      arraylist.add(10010);
      arraylist.add(5);
      arraylist.add(4);
      arraylist.add(2);

      for (int i = 0; i < arraylist.size(); i++) {

          for (int j = arraylist.size() - 1; j > i; j--) {
              if (arraylist.get(i) > arraylist.get(j)) {

                  int tmp = arraylist.get(i);
                  arraylist.set(i,arraylist.get(j)) ;
                  arraylist.set(j,tmp);

              }

          }

      }
      for (int i: arraylist) {
          System.out.println(i);
      }

答案 4 :(得分:0)

交换问题:

   78.75  1280 1344 1472 1664  760 763 773 790 -hsync +vsync

答案 5 :(得分:0)

import java.util.ArrayList;
import java.util.Scanner;

class Main{

    public static String titleCase(String s){
        String is = s;
        String ret = "";


                ret += is.substring(0, 1).toUpperCase();

                ret += is.substring(1).toLowerCase();




          return ret;
        }

    public static ArrayList<String> sort(ArrayList<String> list){
        for(int z = 0; z <list.size()-1; z++){
            if(list.get(z).compareTo(list.get(z+1)) >0){
                list.add(z, list.get(z+1));
                list.remove(z+2);
            }
        }
        return list;

    }


    public static void main(String[] args) {


        Scanner scan = new Scanner (System.in);

        ArrayList<String> names = new ArrayList();
        int x = 0;
        int count = 0;
        String output = "";

        while(x != 1){
        System.out.println("Enter the next name:");
        String temp = scan.next();
        temp = titleCase(temp);


        if(temp.toLowerCase().equals("stop")){
            x = 1;
        }
        else{

            names.add(count, temp);
            count++;
        }

        }
      names.equals(sort(names));
        System.out.println(names.toString());



    }


}

答案 6 :(得分:0)

`import java.util.ArrayList;
import java.util.Collections;

public class SortList {
    public static void main(String[] args){
        ArrayList<Integer> listToSort = new ArrayList<Integer>();
        listToSort.add(10010);
        listToSort.add(5);
        listToSort.add(4);
        listToSort.add(2);
        System.out.println("List to SOrt"+listToSort);
        for(int i= 0;i<listToSort.size();i++)
        {
            for (int j=0;j<listToSort.size();j++){
                if(listToSort.get(j)>listToSort.get(i)){
                    int temp=listToSort.get(i);
                    int temp2=listToSort.get(j);
                    listToSort.set(j,temp);
                    listToSort.set(i,temp2);
                }
            }
        }
        System.out.println("List SOrted"+listToSort);
    }
}

答案 7 :(得分:0)

尝试使用此:

public static void SortingArrayListAsc(List<Integer> list) {

    for (int i = 0; i < list.size(); i++) {

        for (int j = 0; j < list.size(); j++) {

            if (list.get(i) < list.get(j)) {

                Integer temp = list.get(i);

                list.set(i, list.get(j));

                list.set(j, temp);

            }

        }

    }       

}

答案 8 :(得分:-1)

public class SortUsingCollection{


public static void main(String[] args){



ArrayList al=new ArrayList();

al.add(32);
al.add(3);
al.add(23);
al.add(80);
al.add(38);
al.add(31);
al.add(90);
al.add(8);

ListIterator i=al.listIterator();

int k=0;

while(i.hasNext()){
int loop=0;
Integer n=(Integer)i.next();
ListIterator j=al.listIterator();
while(loop<k){
if(j.hasNext())
j.next();
loop++;
}




while(j.hasNext()){


Integer m=(Integer)j.next();


if(m<n){


j.set(n);


i.set(m);


n=m;


}


}



k++;

}


System.out.println(al);


}

}