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) |
- リストの要素を自然順序付けの昇順でソートします。
- 引数は、listです。
- 以下は、OracleのJava8の自然順序付けのsortのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#sort-java.util.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) |
- Comparatorで、並び順をカスタマイズできます。
- 並び順はComparator(コンパレータ)で指定します。
- 引数は、listとComparatorの2つです。
- 以下は、OracleのJava8のComparatorを使用するsortのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#sort-java.util.List-java.util.Comparator-
数値を降順にするサンプルです。
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) |
- Collectionsクラスのreverseメソッドは、要素の並び順を逆にします。降順ではありません。
- 引数はListです。
- 以下は、OracleのJava8のCollectionsクラスのreverseメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#reverse-java.util.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行目は、数値が降順で表示されます。
関連の記事