として返す:私はカテゴリごとに安い製品を含むリストを返したいさまざまなカテゴリと価格の製品のリストを、属性によって最小値を検索し、私はこれに似たクラス持たリスト
public class Product{
public Integer category;
public Integer price;
// getters and setters omitted
}
を。私は、これをキーとしてカテゴリを持つ地図として取得する方法を見つけましたが、リストを用意したいと思います。それを行うための簡潔で読みやすい方法は何ですか?
これは私のマップを与えること、私がこれまで持っているものです。
Map<String, Product> cheapestProducts = products.stream()
.collect(
groupingBy(
Product::getCategory,
collectingAndThen(minBy(comparing(Product::getPrice)), p -> p.get())
)
);
わかりません。あなたのコードは 'Map'を返すでしょうか?なぜそれを 'Map >'に格納しようとしていますか?あなたが 'Map'を持っているときに' values() 'を呼び出すことができます。 –
Tunaki
'製品 'とは何ですか? –
'Map'で' .values() 'を呼び出すだけで' Collection 'を得ることができます。 'List'でなければならない場合、そのコレクションを' ArrayList(Collection) 'コンストラクタに渡します。 'Collector'の中にそのすべてが必要な場合は' collectingAndThen'を使うことができます。 –
Holger