Java でリストを並べ替える

Lovey Arora 2023年10月12日
  1. Java で Collections.sort() メソッドを使用してリストを並べ替える
  2. Java で Collections.reverseorder() メソッドを使用してリストを並べ替える
  3. Java で Stream.sorted() メソッドを使用してリストをソートする
  4. Java で Comparator.naturalOrder() メソッドを使用して ArrayList をソートする
Java でリストを並べ替える

リストは順序付けられたコレクションであり、アイテムを任意の順序で保存できます。従来のアルゴリズムをリストに適用できます。

このチュートリアルでは、さまざまな関数を使用して Java でリストを並べ替える方法を示します。

Java で Collections.sort() メソッドを使用してリストを並べ替える

Collections クラスの sort() 関数を使用して、リストを並べ替えることができます。リストオブジェクトを取得すると、要素の順序が変更されます。リストを昇順で並べ替えます。

例えば、

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist);
    System.out.println("After Sorting: " + slist);
  }
}

出力:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

上記のコードでは、元のリストが変更され、適切な順序で並べ替えられていることがわかります。

リストには同じタイプの要素が含まれている必要があることに注意してください。それ以外の場合は、CLassCastException がスローされます。

Java で Collections.reverseorder() メソッドを使用してリストを並べ替える

Collections.reverseorder() メソッドを使用して、ArrayList を降順で並べ替えます。この方法を直接使用することはありません。まず、Collections.sort() メソッドを使用して昇順で並べ替え、次に Collections.reverseorder() メソッドを使用して降順で並べ替えます。

以下のコードを参照してください。

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist, Collections.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

出力:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

上記のコードでリストを作成し、Collections.sort() メソッドを使用して並べ替えました。次に、Collections.reverseorder() メソッドを使用して降順で並べ替えられます。

Java で Stream.sorted() メソッドを使用してリストをソートする

sorted() 関数は、java.util パッケージにある Stream インターフェースで定義されています。この方法を使用すると、リストは昇順で並べ替えられます。リスト内の要素が同じタイプでない場合は、java.lang.ClassCastEcxeption がスローされます。

ここでは、stream() 関数を使用してリスト内の要素のコレクションを管理し、collect() が要素を受け取って格納し、tolist() 関数が最終的にソートされた順序でリストを返すことにします。

例えば、

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    List<Integer> sortedList = slist.stream().sorted().collect(Collectors.toList());
    System.out.println("After Sorting: " + sortedList);
  }
}

出力:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

上記の例では、新しいリストが作成されていることに注意してください。

Java で Comparator.naturalOrder() メソッドを使用して ArrayList をソートする

Java の Comparator インターフェイスは、目的のデータメンバーに基づいてユーザーが作成したクラスのオブジェクトを並べ替えることができます。リストの並べ替えにも使用できます。

naturalOrder() 関数は、要素を昇順で並べ替えます。

以下のコードを参照してください。

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.naturalOrder());
    System.out.println("After Sorting: " + slist);
  }
}

出力:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

この方法を使用すると、null 要素が一番上に並べ替えられます。アルファベットの場合、大文字で始まる単語が最初にソートされ、次に小文字で始まる単語が昇順でソートされます。

前に説明したように、reverseOrder() 関数を使用して降順で並べ替えることができます。

例えば、

import java.util.*;
import java.util.stream.*;
public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

出力:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

関連記事 - Java List