最初に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つの実装フォームがあります
- コレクションを使用して並べ替え
- 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;
}
}