logo

ArrayList をソートする Java プログラム

ArrayList は、Collection フレームワークで提供されるクラスです。 Java では、コレクション フレームワークは java.util パッケージで定義されます。 ArrayList は要素を動的に格納するために使用されます。 ArrayList にはサイズ制限がないため、配列よりも柔軟性があります。 ArrayList は、データを順序付けされていない方法で格納します。場合によっては、データを順序どおりに並べ替える必要があります。

Javaには2種類のArrayListがあります。 1 つは Wrapper クラス オブジェクトの ArrayList で、もう 1 つはユーザー定義オブジェクトの ArrayList です。両方のタイプの ArrayList のソートを見てみましょう。最初のものから始めましょう。



  1. Wrapper Class オブジェクトの ArrayList をソートします。
    • 昇順
    • 降順
  2. ユーザー定義オブジェクトの ArrayList を並べ替えます。
    • 匹敵します
    • コンパレータ

タイプ 1: ラッパー クラス オブジェクトの ArrayList を並べ替える

Wrapper クラス オブジェクトの ArrayList は、String、Integer などのオブジェクトの ArrayList にすぎません。ArrayList は、昇順と降順の 2 つの方法で並べ替えることができます。コレクション クラスには、ArrayList を並べ替えるための 2 つのメソッドが用意されています。 sort() と reverseOrder() はそれぞれ昇順と降順です。

1(A)昇順



この sort() メソッドはリスト オブジェクトをパラメータとして受け取り、昇順にソートされた ArrayList を返します。 sort() メソッドの構文は次のようになります。

Collections.sort(objectOfArrayList);>

ArrayList 内のすべての要素は相互に比較可能である必要があり、そうでない場合はスローされます。 クラスキャスト例外 。ここで、相互に比較できるとは、リストのすべての項目が同じデータ型を持つことを意味します。

ArrayList list = new ArrayList(); list.add(132); list.add(321); list.add('India');>

上記の例では、リストに 3 つの要素があり、そのうち 2 つの要素は Integer 型で、1 つは String 型であることがわかります。 Integer 型の 2 つの要素は相互に比較できますが、String 型の要素は他の 2 つと比較できません。この場合、ClassCastException が発生する可能性があります。したがって、リストには同じタイプの要素が含まれている必要があります。



並べ替えを理解するために次の例を考えてみましょう。

ジャワ

センターボタンCSS




// Java Program to Sort an ArrayList> // import java.util package> import> java.util.*;> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>'India'>);> >list.add(>'Pakistan'>);> >list.add(>'Srilanka'>);> >list.add(>'USA'>);> >list.add(>'Australia'>);> >list.add(>'Japan'>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in ascending Order> >Collections.sort(list);> >// printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

>

>

出力:

Before Sorting : [India, Pakistan, Srilanka, USA, Australia, Japan] After Sorting : [Australia, India, Japan, Pakistan, Srilanka, USA]>

1(B) 降順

ArrayList を降順に並べ替えるには、次を使用します。 reverseOrder() メソッドをsort()メソッドの引数として使用します。 reverseOrder() メソッドを直接呼び出すことはできません。このメソッドは 2 つのパラメータを取ります。1 つは ArrayList のオブジェクトで、2 番目のパラメータは Collections.reversOrder() メソッドです。このメソッドは ArrayList を降順で返します。 sort() メソッドと同様に、ArrayList は相互に比較可能である必要があり、そうでない場合はスローされます。 クラスキャスト例外

Collections.sort(objectOfArrayList, Collections.reverseOrder());>

ここで、このメソッドはまず項目を昇順で並べ替え、次に並べ替えられた項目の順序を逆にします。

ジャワ




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Define an objects of ArrayList class> >ArrayList list =>new> ArrayList();> >// Adding elements to the ArrayList> >list.add(>410>);> >list.add(>250>);> >list.add(>144>);> >list.add(>967>);> >list.add(>289>);> >list.add(>315>);> >// Printing the unsorted ArrayList> >System.out.println(>'Before Sorting : '> + list);> >// Sorting ArrayList in descending Order> >Collections.sort(list, Collections.reverseOrder());> >// Printing the sorted ArrayList> >System.out.println(>'After Sorting : '> + list);> >}> }>

Javaで現在の日付を取得する
>

>

出力:

Before Sorting : [410, 250, 144, 967, 289, 315] After Sorting : [967, 410, 315, 289, 250, 144]>

2. ユーザー定義オブジェクトの ArrayList のソート

Base64 JavaScriptをデコードする

ユーザー定義オブジェクトの ArrayList は、カスタム オブジェクトの ArrayL.ist に他なりません。 Java には、コレクション要素の並べ替えに使用できるインターフェイスが 2 つあります。比較可能と比較者。

2(A) 同等品

Comparable は単一の並べ替えシーケンスを提供します。 Comparable を使用すると、元のクラスに影響します。同等のインターフェイスが提供する 比較対象() 要素を並べ替えるメソッド。 Java では、同等のものは java.lang パッケージによって提供されます。を呼び出すことで ArrayList を並べ替えることができます。 Collections.sort(List) メソッド

例: 並べ替えは在庫車両数に基づいて行われます。

ジャワ




// Java Program to Sort an ArrayList> // Importing generic java files> import> java.util.*;> // Implements comparable interface into custom class> class> Car>implements> Comparable {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor of the class> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> >// Override the compareTo method> >public> int> compareTo(Car car)> >{> >if> (stock == car.stock)> >return> 0>;> >else> if> (stock>車.在庫)>> >return> 1>;> >else> >return> ->1>;> >}> }> // Main driver method> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c);> >// Iterate over ArrayList using for each loop> >for> (Car car : c) {> >// Print the sorted ArrayList> >System.out.println(car.ModalNo +>' '> + car.name> >+>' '> + car.stock);> >}> >}> }>

>

>

出力:

2013 creta 10 2020 MG 13 2018 Kia 20 2017 Audi 45 2015 BMW 50>

2(B) コンパレータ

Comparator は複数の並べ替えシーケンスを提供します。コンパレータは元のクラスには影響しません。コンパレータが提供するもの 比較する() 要素を並べ替えるメソッド。 Java では、同等のものは java.util パッケージによって提供されます。 Collections.sort(List, Comparator) メソッドを呼び出すことで、ArrayList を並べ替えることができます。一例を挙げてみましょう。

ジャワ




// Java Program to Sort an ArrayList> // Step 1: ImportingDB files> import> java.util.*;> // Class 1: Parent Class> class> Car {> >int> ModalNo;> >String name;> >int> stock;> >// Parameterized constructor> >Car(>int> ModalNo, String name,>int> stock)> >{> >this>.ModalNo = ModalNo;> >this>.name = name;> >this>.stock = stock;> >}> }> // Class 2: Child class> // creates the comparator for comparing stock value> class> StockComparator>implements> Comparator {> >// Function to compare> >public> int> compare(Car c1, Car c2)> >{> >if> (c1.stock == c2.stock)> >return> 0>;> >else> if> (c1.stock>c2.在庫)>> return> 1>;> >else> >return> ->1>;> >}> }> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create the ArrayList object> >ArrayList c =>new> ArrayList();> >c.add(>new> Car(>2018>,>'Kia'>,>20>));> >c.add(>new> Car(>2020>,>'MG'>,>13>));> >c.add(>new> Car(>2013>,>'creta'>,>10>));> >c.add(>new> Car(>2015>,>'BMW'>,>50>));> >c.add(>new> Car(>2017>,>'Audi'>,>45>));> >// Call the sort function> >Collections.sort(c,>new> StockComparator());> >// For each loop to iterate> >for> (Car car : c) {> > >// Print the sorted ArrayList> >System.out.println(car.stock +>' '> + car.name> >+>' '> + car.ModalNo);> >}> >}> }>

クラスカルスアルゴリズム

>

>

出力:

10 creta 2013 13 MG 2020 20 Kia 2018 45 Audi 2017 50 BMW 2015>