1. ホーム
  2. java

[解決済み] Javaでstream.sorted()を使ってリストをソートする

2022-03-02 16:22:27

質問

私はストリームからリストをソートすることに興味があります。これは私が使っているコードです。

list.stream()
    .sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue()))
    .collect(Collectors.toList());

何か見落としているのでしょうか?この後、リストがソートされません。

最も低い値を持つ項目に従ってリストをソートする必要があります。

for (int i = 0; i < list.size(); i++)
{
   System.out.println("list " + (i+1));
   print(list, i);
}

そして、printメソッド。

public static void print(List<List> list, int i)
{
    System.out.println(list.get(i).getItem().getValue());
}

解決方法は?

とは異なります。 Collections.sort() ここで、パラメータ参照はソートされます。この場合、ソートされたストリームが得られるだけで、それを集めて最終的に別の変数に代入する必要があります。

List result = list.stream().sorted((o1, o2)->o1.getItem().getValue().
                                   compareTo(o2.getItem().getValue())).
                                   collect(Collectors.toList());

結果を代入しそこなっただけです