我刚开始使用 Java流,所以我为任何误解而道歉.
我希望在我的流上使用Collect返回一个流,该流具有与所有元素匹配的分组行,但是一个到单个行,其中一个元素被添加到集合中.
例如,如果我的流包含数据:
[{12, "Apple", "Gala"},
{12, "Apple", "Fuji"},
{13, "Orange", "Navel"},
{13, "Orange", "Valencia"}]
收集第3列后,它将返回带有数据的流:
[{12, "Apple", ["Gala", "Fuji"]},
{13, "Orange", ["Navel", "Valencia"]}]
这是否可以使用流收集方法?非常感谢任何和所有的帮助!
谢谢.
最佳答案 你需要做的是创建一个水果类.
一旦你完成了,你有三个吸气剂
getNumber,getType,getName.
所以现在你有一个名为List的Fruit列表.
一旦你有了,你会做:
list.stream()
.collect(Collectors.groupingBy(Fruit::getNumber,
Collectors.groupingBy(Fruit::getName, Collectors.mapping(Fruit::getType, Collectors.toList())))));
这将返回一个哈希映射的哈希映射,如下所示:
{12={Apple=[Gala]}, 13={Orange=[Navel, Valencia]}}
如果希望fruit对象是键而不是名称,可以用Function.identity()替换Fruit :: getName.