2017-01-16 9 views
3

LambdaJインデックスの代わりにJavaストリームAPIとは何ですか?このようなコードがあるとしましょう。LambdaJインデックスの代わりにJavaストリーム

List<Product> products = ... 
Map<Month, Product> productsOnMonths = Lambda.index(products, Lambda.on(Product.class).getMonth()); 

ここで、すべての商品に月の属性が一意であることがわかりました。

答えて

3
products.stream().collect(Collectors.toMap(Product::getMonth, s -> s)); 

ここでの違いはCollectors.toMapは、それらが同じであるときに、2つのエントリをマージする方法を言う第三引数を取ることができるということです。私はlambdajが提供しているとは思わない

+0

とてもエレガントです。最後に、アイデンティティ関数を持つバージョンを使用しました。 'products.stream()。collect(Collectors.toMap(Product :: getMonth、Function.identity()));' – Behnil

関連する問題