相关疑难解决方法(0)

流分组:减少到列表的第一个元素

我有一个List<Valuta>可以表示(简化)JSON风格:

[{codice = EUR,description = Euro,ratio = 1},{codice = USD,description = Dollars,ratio = 1.1}]

我想用这样的方式改变它Map<String, Valuta>:

{EUR = {codice = EUR,description = Euro,ratio = 1},USD = {codice = USD,description = Dollars,ratio = 1.1}}

我写了这个单行:

getValute().stream().collect(Collectors.groupingBy(Valuta::getCodice));
Run Code Online (Sandbox Code Playgroud)

但这会返回一个Map<String, List<Valuta>>而不是我需要的东西.

我认为mapping()功能对我有用,但不知道如何.

java grouping java-8 java-stream collectors

25
推荐指数
4
解决办法
1万
查看次数

如何使用java 8 stream和lambda来flatMap一个groupingBy结果

我有一个包含其他对象列表的对象,我想返回由容器的某些属性映射的包含对象的平面图.任何一个是否可以只使用流和lambdas?

public class Selling{
   String clientName;
   double total;
   List<Product> products;
}

public class Product{
   String name;
   String value;
}
Run Code Online (Sandbox Code Playgroud)

让我们来处理一系列操作:

List<Selling> operations = new ArrayList<>();

operations.stream()
     .filter(s -> s.getTotal > 10)
     .collect(groupingBy(Selling::getClientName, mapping(Selling::getProducts, toList());
Run Code Online (Sandbox Code Playgroud)

结果将是善意的

Map<String, List<List<Product>>> 
Run Code Online (Sandbox Code Playgroud)

但我想像它一样扁平化

Map<String, List<Product>>
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream collectors

4
推荐指数
2
解决办法
2719
查看次数

标签 统计

collectors ×2

java ×2

java-8 ×2

java-stream ×2

grouping ×1

lambda ×1