LoginSignup
1
0

More than 3 years have passed since last update.

JavaでListを降順ソートし非破壊で新たにListを生成する

Last updated at Posted at 2020-09-01

概要

表記の件、AtCoderの問題を解く時に必要になったのでメモ書きで残します。Javaで実装しようとした時にいくつか方法は挙げられると思いますが、個人的に一番短く書けると感じる実装を記載します。

対応方針

実装サンプル

下記のように入力する数字の数と、数字のリストを入力し、

4
2 2 1 3

入力した数字リストを降順に出力するサンプルです。

Sample.java

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

import static java.util.Comparator.reverseOrder;

public class Sample {

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        List<Long> inputList = new ArrayList<Integer>();
        for(int i = 0; i < n ;i++) {
            inputList.add(sc.nextInt());
        }
        // ここがソートの該当箇所
        List<Integer> sortedList = inputList.stream().sorted(reverseOrder()).collect(Collectors.toList());
        for(int a: sortedList) {
            System.out.println(a);
        }
    }
}


【2020/9/2追記】@swordoneさんからコメント頂きました。immutable保証まで行う場合はソート部分は下記のようになります。

List<Integer> sortedList = inputList.stream().sorted(reverseOrder())
                                    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0