JAVAArrayListはソートを実装します

最初に20個の乱数を生成し、それらをArrayListに格納します

ArrayList<Integer> al=new ArrayList<>();
        Random r=new Random();
        for (int i=0;i<20;i++) {
    
    
            al.add(r.nextInt(100));
        }

出力は次のとおりです
ここに画像の説明を挿入


ArrayListのソートには2つの実装フォームがあります
  1. コレクションを使用して並べ替え
  2. ArrayListに付属のsort()を使用します

2つの方法は実際には似ています

コレクションの並べ替え

ここで、Collectionsでsort()を使用する場合は、コンパレータ
も渡す必要があります。これも非常に理解しやすいです。渡す配列の内容が実数ではなく、オブジェクトである場合もあります。現時点では、 sortを直接呼び出すと、システム何でソートしたいかを知る方法がありません。
ここに画像の説明を挿入


ここでは整数をソートしています。最初に自分でコンパレータを作成します。

class SortByIndex implements Comparator<Integer> {
    
    

    @Override
    public int compare(Integer o1, Integer o2) {
    
    
        if(o1>o2) {
    
    
            return 1;
        }
        return -1;
    }
}

次に、sort()を今すぐ渡します
ここに画像の説明を挿入


これは正常にソートできます
ここに画像の説明を挿入


ArrayListには並べ替えが付属しています

実際、これはコレクションに似ているので、ここに直接コードを配置します。

public class ArrayListTest {
    
    

    public static void main(String[] args) {
    
    

        ArrayList<Integer> al=new ArrayList<>();
        Random r=new Random();
        for (int i=0;i<20;i++) {
    
    
            al.add(r.nextInt(100));
        }
        outputStringArrayList(al);

//        Collections.sort(al,new SortByIndex());
        al.sort(new SortByIndex());

        System.out.println("排序后为:");
        outputStringArrayList(al);
    }

    public static void outputArrayList(ArrayList<Integer> arr) {
    
    
        Iterator<Integer> it=arr.iterator();
        while(it.hasNext()) System.out.print(it.next()+" ");
        System.out.println();
    }

    public static void outputStringArrayList(ArrayList<Integer> arr) {
    
    
        String str=arr.toString();
        System.out.println(str);
    }

    public static void outputStringLinkedList(LinkedList<Integer> ll) {
    
    
        String str=ll.toString();
        System.out.println(str);
    }
}

class SortByIndex implements Comparator<Integer> {
    
    

    @Override
    public int compare(Integer o1, Integer o2) {
    
    
        if(o1>o2) {
    
    
            return 1;
        }
        return -1;
    }
}

おすすめ

転載: blog.csdn.net/weixin_44062380/article/details/107182347