Java リストの要素をソートする(Collectionsクラス)

JavaのArraylistなどのリストの要素をソートするサンプルです。

確認環境
・Java 8

目次

ソートする Collectionsクラスのsortメソッド
  数値を昇順にする(自然順序付け)
  文字を昇順にする(自然順序付け)
  数値を降順にする(sort + Comparator)
逆順にする Collectionsクラスのreverseメソッド
  数値を降順にする(sort+reverse)

Collectionsクラスのsortメソッド

public static <T extends Comparable<? super T>> void sort(List<T> list)

数値を昇順にする(自然順序付け)

数値を昇順にするサンプルです。

package test1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

public class Test1 {
    public static void main(String[] args) {
    	
    	List<Integer> num1 = new ArrayList<>(Arrays.asList(100,35,72));
        
        Collections.sort(num1);
        
        for (Integer a : num1) {
            System.out.println(a);//35 72 100
        }
    }
}

12行目は、sortメソッドで昇順に並び替えています。
15行目は、数値が昇順で表示されます。

文字を昇順にする(自然順序付け)

文字を昇順にするサンプルです。

package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
    	
    	List<String> c1 = new ArrayList<>(Arrays.asList("b","a","c"));
        
        Collections.sort(c1);
        
        for (String a : c1) {
            System.out.println(a);//a b c
        }
    }
}

12行目は、sortメソッドで昇順に並び替えています。
15行目は、文字列が昇順で表示されます。

数値を降順にする(sort + Comparator)

public static <T> void sort(List<T> list,Comparator<? super T> c)

数値を降順にするサンプルです。

package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
    	
    	List<Integer> num1 = new ArrayList<>(Arrays.asList(100,35,72));
        
    	Collections.sort(num1,new java.util.Comparator<Integer>(){
            @Override
            public int compare(Integer i1,Integer i2) {
            	return i2 - i1;
            }
        });
        for (Integer a : num1) {
            System.out.println(a); //100 72 35
        }
    }
}

12~17行目は、数値を降順にしています。
12行目のComparatorの箇所は匿名クラスです。Comparatorインターフェースのcompareメソッドをオーバーライドしています。
Java 匿名クラスのサンプル

compareメソッドは、順序を付けるため2つの引数を比較します。
以下は、OracleのJava8のComparatorインターフェースのcompareメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html#compare-T-T-

19行目は、数値が降順で表示されます。

Collectionsクラスのreverseメソッド

public static void reverse(List<?> list)

逆順にするサンプルです。降順ではありません。

package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
    	
    	List<Integer> num1 = new ArrayList<>(Arrays.asList(100,35,72));
        
    	Collections.reverse(num1);

        for (Integer a : num1) {
            System.out.println(a); //72 35 100
        }
    }
}

12行目は、reverseメソッドで逆順にしています。
15行目は、単純に数値が逆の順序で表示されます。

数値を降順にする(sort+reverse)

数値を降順にするサンプルです。
いったんsortメソッドで昇順にしてからreverseメソッドで逆順にします。

package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test1 {
    public static void main(String[] args) {
    	
    	List<Integer> num1 = new ArrayList<>(Arrays.asList(100,35,72));
        
        Collections.sort(num1);
        Collections.reverse(num1);

        for (Integer a : num1) {
            System.out.println(a); //100 72 35
        }
    }
}

12行目は、sortメソッドで昇順に並び替えています。
13行目は、reverseメソッドで逆順にしています。
16行目は、数値が降順で表示されます。

関連の記事

Java ArrayListとListの使い方のサンプル

△上に戻る