簡體   English   中英

如何在數組列表中進行排序而不使用 Java 中的集合

[英]How to do sorting in array list without using collections in Java

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 方法的情況下做到這一點? 非常感謝您的幫助。

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

您不能為方法調用分配值。 正如編譯器告訴你的,賦值的左邊必須是一個變量。

使用set方法:

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

有沒有辦法在不使用 set 方法的情況下做到這一點?

不可以。除非您希望將 ArrayList 轉換為數組,否則請對數組進行排序,並使用排序后的數組更新 ArrayList。

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

您不能直接為 ArrayList 索引賦值。 您必須使用 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);
      }

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

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

您可以利用set方法返回先前值的事實。 該算法在Collections.swap標准方法中實現,因此您可以使用它:

Collections.swap(arraylist, i, j);

交換問題:

            int tmp = arraylist.get(i);
              arraylist.set(i,arraylist.get(j)) ;
              arraylist.set(j,tmp);
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());



    }


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

嘗試使用這個:

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

            }

        }

    }       

}

public int [] sortArrayByType(int[] array,String sortType){

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

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


                if(sortType.equals("asc")) {
                    if (array[i] > array[j]) {
                        swapValues(array, i, j);
                    }
                }else{
                    if (array[i] < array[j]) {
                        swapValues(array, i, j);
                    }
                }
        }
    }
    return array;
}

private void swapValues(int[] array, int i, int j) {
    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}
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);


}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM