jjzjj

groupingby

全部标签

java - 有没有一种方法可以使用 "groupingBy"为嵌套结构中的多个元素收集 map ?

首先,一些上下文代码:importjava.util.*;importjava.util.concurrent.atomic.DoubleAdder;importjava.util.function.Function;importjava.util.stream.Collectors;classScratch{staticenumId{A,B,C}staticclassIdWrapper{privatefinalIdid;publicIdWrapper(Idid){this.id=id;}IdgetId(){returnid;}}publicstaticvoidmain(String[

Java 8 流 : build multilevel/composite objects

我开始使用Java8流API。我想将“sql结果集”列表转换为域对象,即复合结构。领域对象:一个用户有一个权限的集合,每个权限都有一个申请年份的集合。例如,John有2个权限(MODERATOR和DEV)。版主权限仅适用于2014年和2015年其开发许可仅适用于2014年。classUser{//someprimitivesattributesListpermission;}classPermission{//someprimitivesattributesListyears;}现在我进行查询并得到一个简单的结果列表,类似于:[1,"moderator",2014][1,"modera

java - flatMap Set of Sets inside groupingBy 的优雅方式

所以我有一段代码,我在其中迭代数据列表。每一个都是一个ReportData包含带有LongcaseId的案例和一个Ruling.每个Ruling有一个或多个Payment.我想要一个Map与caseId作为键和支付集作为值(即Map>)。个案在行中不是唯一的,但个案是。换句话说,我可以有几行相同的案例,但它们会有独特的裁定。下面的代码给我一个Map>>这几乎是我想要的,但我一直在努力寻找在给定上下文中对最终集合进行flatMap的正确方法。我一直在做变通办法,使逻辑按原样使用此map正确工作,但我非常想修复算法以将付款集正确组合成一个集,而不是创建一组集。我四处搜索并没有找到相同类型迭

java - 在 Java 8 中使用 group by 进行计数的实现

我正在寻找groupby的实现,然后根据lambda表达式中的计数进行过滤。selectCOUNT(employee_id),department_idfromemployeeGROUPBYdepartment_idHAVINGCOUNT(employee_id)>1是否有使用lambda表达式实现此目的的任何简单实现。 最佳答案 您可以将groupingBy收集器与counting()和collectingAndThen结合使用:importstaticjava.util.stream.Collectors.collectingA

java - 在 java 8 中不使用 POJO 进行分组

我有一个用例,我需要读取一个文件并获取序列的分组以及与该序列关联的值列表。文件中这些记录的格式类似于sequence-val,example10-A10-B11-C11-A我希望输出是一个映射(Map>),其中序列作为键,与之关联的值列表作为值,如下所示10,[A,B]11,[C,A]有没有一种方法可以在不为这些记录创建POJO的情况下执行此操作?我一直在尝试探索Collectors.groupingBy的用法我看到的大多数示例都是基于创建POJO。我一直想写这样的东西Map>seqCpcGroupMap=pendingCpcList.stream().map(rec->{String

具有自定义逻辑的 Java 8 Stream groupingBy

我有一个Records的列表.其中有两个字段:LocalDateTimeinstant和一个Doubledata.我想按小时对所有记录进行分组并创建一个Map.其中键(Integer)是小时,值(Double)是该小时的最后数据-该小时的第一个数据。到目前为止我所做的如下:FunctionkeyFunc=rec->rec.getInstant().getHour();Map>valueMap=records.stream().collect(Collectors.groupingBy(keyFunc));我希望值映射包含Double而不是List.例如:列表记录可以是:InstantD

Java 8 stream.collect( ... groupingBy ( ... mapping( ... reducing ))) 减少 BinaryOperator 的使用

我尝试了一个使用groupingBy、mapping和reducing的解决方案以下问题:Elegantlycreatemapwithobjectfieldsaskey/valuefromobjectstreaminJava8.总结一下目标是得到一个以年龄为key,以一个人的爱好为Set的map。我想出的解决方案之一(不是很好,但这不是重点)有一个奇怪的行为。使用以下列表作为输入:ListpersonList=Arrays.asList(newPerson(/*name*/"A",/*age*/23,/*hobbies*/asList("a")),newPerson("BC",24,a

java - 如何使用 Java Stream API(groupingBy 收集器)对列表中的值进行分组?

我有Entry的列表对象。Entry是一个:classEntry{privatefinalDatedate;privatefinalStringvalue;//constructor//getters}我需要按天对这些条目进行分组。例如,2011-03-2109:00VALUE12011-03-2109:00VALUE22011-03-2214:00VALUE32011-03-2216:00VALUE42011-03-2116:00VALUE5应该分组:2011-03-21VALUE1VALUE2VALUE52011-03-22VALUE3VALUE4我想要一个Map>.如何使用Str

java - Java groupingBy 收集器是否保留列表顺序?

考虑一个列表List其中元素按People.getAge()的升序排序.如果我们使用Collectors.groupingBy(People::getCity)对这个列表进行分组,每个组/城市的结果列表是否仍按年龄排序?实际上,它似乎确实保留了顺序。我正在寻找保证。该方法的Javadoc说:IfpreservationoftheorderinwhichelementsappearintheresultingMapcollectorisnotrequired,usinggroupingByConcurrent(Function)mayofferbetterparallelperforma

Java 8 GroupingBy 进入 Peek

我最近了解了Java8中的流并开始使用它们。现在我有一个关于groupingBy的问题采集方法:我通常使用.NET,所以我比较了(知道它们不相同)JavaStream使用.NETIEnumerable.在这个比较之后,List存储元素和特定的Stream/IEnumerable应用操作。一个例子:C#:elements.Where(x=>x.Value==5).ToList();Java:elements.stream().filter(x->x.getValue()==5).collect(Collectors.toList());在这两个示例中,我都从一个列表开始,定义操作(在本示