我不认为这叫做“分组”,但我需要做到以下几点:我有课
class Person {
String name;
Set<String> groups;
}
我有一些人:
所以,每个人都可以是多个类别的一部分。我想得到以下映射:
"Worker" => {Father}
"Men" => {Father, Son}
"Student" => {Son, Daughter}
"Woman" => {Mother, Daughter}
现在,我可以手动迭代每个人,并将他们放到地图上
我正试图找到一个更优雅的wat来使用流(或StreamEx)oneliner,比如:
List<Persons> family= ...;
Map<String,List<Person>> groupped = family.stream().groupByMultipleAttributes(Person::getGroups)
您可以生成所有相关的组对和Person
s,然后使用groupingBy
将它们收集到地图中:
Map<String,List<Person>> groups =
family.stream()
.flatMap(p -> p.getGroups()
.stream()
.map(g -> new SimpleEntry<>(g,p)))
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())));
我有一张清单,傻瓜 我想按类别分组,然后合计金额和价格。 现在我只需要用一个保存汇总的金额和价格的Foo对象替换String键。这就是我被困住的地方。我好像找不到办法。
问题内容: 我发现了关于将两个数组列表交织在一起的类似问题,但在PHP中却是如此。我在面试中也被问到了这个问题,但无法解决,回到SO看看是否已经解决,但我只能找到这篇 论文 那么是否有任何指向伪代码或方法定义的指针? Big(O)限制:O(n)-时间成本和O(1)-空间成本 示例: a [] = a1,a2,…, a b [] = b1,b2,…,bn 将数组列表重新排列为a1,b1,a2,b2,
这将产生以下结果 我所感兴趣的实际上只是上面结果中的列表,我希望理想地将其作为groupby操作的一部分来完成。我知道这是可以做到的,例如,通过循环结果映射结构。但是有没有一种方法可以使用流来实现它呢?
问题内容: 我有类似以下内容: 例如100的集合,其中stackid可以使用不同的questionId复制。stackId和questionId之间的一对多关系 是否有一种 流式的 Java 8方式可以转换为以下结构: 这将是25个的集合,每个实例具有4个QuestionId的嵌套集合。 输入: 输出量 问题答案: Stream API的直接方法涉及2条Stream管道: 第一个创建一个临时的到。
问题内容: var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}]; 如何将其合并为一个obj? 问题答案: 如果您的环境支持,那么您可以像这样简洁地进行操作 ES5解决方案: 您可以使用这样的 此解决方案仅将的所有键及其值收集在中的每个对象中,最终将结果返回给我们。 这张支票 有必要确保我们在结果中不包括所有继承的可枚举属性。
如何在两个属性之后对对象数组进行分组?在以下情况下是否可以使用减少? 例如:按国家和城市将以下数组分组,并对“年龄”属性求和: /*预期结果:*/