Java8 Comparatorを使用してリストの数値を降順にする方法

環境
JavaSE 1.8
Eclipse 4.14

書式
public static <T> void sort(List<T> list,Comparator<? super T> c)
Comparatorで、並び順をカスタマイズできます。
並び順はComparator(コンパレータ)で指定します。
引数は、listとComparatorの2つです。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.study;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ArkgameTest {
public static void main(String[] args) throws ParseException {
List<Integer> numLst = new ArrayList<>(Arrays.asList(100, 34, 45, 56));
// Comparatorの箇所は匿名クラス
Collections.sort(numLst, new java.util.Comparator<Integer>() {
// Comparatorインターフェースのcompareメソッドをオーバーライド
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for (Integer nn : numLst) {
System.out.println(nn);
}
}
}
package com.arkgame.study; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; public class ArkgameTest { public static void main(String[] args) throws ParseException { List<Integer> numLst = new ArrayList<>(Arrays.asList(100, 34, 45, 56)); // Comparatorの箇所は匿名クラス Collections.sort(numLst, new java.util.Comparator<Integer>() { // Comparatorインターフェースのcompareメソッドをオーバーライド @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); for (Integer nn : numLst) { System.out.println(nn); } } }
package com.arkgame.study;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ArkgameTest {

      public static void main(String[] args) throws ParseException {

            List<Integer> numLst = new ArrayList<>(Arrays.asList(100, 34, 45, 56));
            // Comparatorの箇所は匿名クラス
            Collections.sort(numLst, new java.util.Comparator<Integer>() {
                  // Comparatorインターフェースのcompareメソッドをオーバーライド
                  @Override
                  public int compare(Integer o1, Integer o2) {
                        return o2 - o1;
                  }

            });
            for (Integer nn : numLst) {
                  System.out.println(nn);
            }

      }

}

実行結果
100
56
45
34

Java

Posted by arkgame