草庐IT

GROUPing

全部标签

Java 8 Lambda(一步分组和归约)

假设我有一个Pair对象列表,List>listOfPairs=//somelistofpairs;我想将此列表分组为Map>.目前,我可以分两步完成。第一步按A分组,返回aMap>如下:Map>intermediateStep=listOfPairs.stream().collect(Collectors.groupingBy((Pair::getLeft),Collectors.toSet()));然后我流式传输上面映射的入口集并将它们收集到所需的最终结果中,主要是通过将每个Pair对象映射到它的B值,并将它们收集到一个集合中:Map>finalResult=intermediat

java - 如何在使用列表在 map 中分组时过滤年龄

类似于我之前的问题here,我拥有的User对象是这些newUser("ayush","admin",23)newUser("ashish","guest",19)newUser("ashish","admin",20)newUser("garima","guest",29)newUser("garima","super",45)newUser("garima","guest",19)现在,我正在尝试根据这些用户的不同年龄趋势来命名。但我需要在threshold年龄以上过滤它们。我可以使用了解趋势Map>userNameAndAgeTrend=users.stream().collec

java - 对对象进行分组的算法

我有以下类(class):classSport{privateStringsportsName;privateListpeopleWhoPlayThisSport;//...}classPeople{privateStringname;privatelonguniqueId;//...}我的输入是一个运动对象列表,为简单起见,请考虑以下示例:sport1-Football,sport2-Basketball,sport3-Baseball,sport4-Hockey,sport5-Soccer,我必须创建一个List>,使得内部列表是所有至少有1个普通玩家的运动(传递属性适用于此处)。

java - 如何在 Java 8 Stream API 中使用 Collectors.grouping 来创建 map

我第一次寻找Java8的StreamAPI。我尝试创建一个过滤器来从Map中删除元素。这是我的map:Mapm=newHashMap();我想删除值)。这是我一直在尝试的:m.entrySet().stream().filter(p->p.getValue()>0).collect(Collectors.groupingBy(s->s.getKey()));我得到一个HashMap>。所以,这不是我想要的。我也试过:m.entrySet().stream().filter(p->p.getValue()>0).collect(Collectors.groupingBy(Map::Ent

java - 空指针异常 : element cannot be mapped to a null key

我已阅读主题:Collectors.groupingBydoesn'tacceptnullkeys但我不明白如何将它应用于我的问题:我的代码:Map>mappingEntryMap=mapping.getMappingEntries().stream().collect(Collectors.groupingBy(MappingEntry::getMilestone,Collectors.mapping(e->e,Collectors.toList())));对我来说,MappingEntry::getMilestone有时会返回null。这对我的情况没问题,但我看到:Causedby

java - 使用 Java 8 按两个字段对对象进行分组

我在使用Java8对两个值进行分组时遇到问题。我的主要问题是关于对两个字段进行分组,我正确地分组了一个名为getNameOfCountryOrRegion()的字段,但现在我对groupingBy感兴趣的是另一个名为的字段leagueDTO也是如此。Map>result=countryDTOList.stream().collect(Collectors.groupingBy(FullCalendarDTO::getNameOfCountryOrRegion));还有下面的类:publicclassFullCalendarDTO{privatelongid;privateTeamDTO

java - 如何使用 java 8 将一组对象分组到排序列表中?

我想获取一组对象(在本例中为ObjectInstance),我想按一个属性对它们进行分组,然后根据另一个属性对生成的列表进行排序。Setbeans=server.queryMBeans(null,null);Map>beansByDomain=beans.stream().collect(groupingBy((ObjectInstanceoi)->oi.getObjectName().getDomain(),mapping((ObjectInstanceoi)->oi.getObjectName().getCanonicalKeyPropertyListString(),toList

java - 使用 Collection.stream 按特定属性动态分组

我正在尝试使用Java8Collection-Stream按多个属性对对象列表进行分组。这很好用:publicclassMyClass{publicStringtitle;publicStringtype;publicStringmodule;publicMyClass(Stringtitle,Stringtype,Stringmodule){this.type=type;this.title=title;this.module=module;}}Listdata=newArrayList();data.add(newMyClass("1","A","B"));data.add(new

java - 对多个注释进行分组

我有Java1.7。有什么方法可以将多个注释分组为单个注释。这样我就可以使用单个注释进行注释并获取所有分组的多个注释的所有属性。我想避免每次都重复多个注释行。我们可以将3个注解合二为一吗Java核心库或其他库是否支持此功能。谢谢 最佳答案 不,那是不可能的。一个既定的习惯用法是用它的组合注释对@Combined注释进行元注释:@A@B@Cpublic@interfaceCombined{}此模式表示使用@Combined注释元素等同于指定@A、@B和@C在该元素处。这当然需要使用这些注释的库了解并使用这种模式。那就是例如BeanVa

Java 8 一对多分组

我想学习如何将Java8语法与流一起使用,但有点卡住了。当每个值都有一个键时,分组就很容易了。但是,如果我有一个包含每个值的键列表并且仍然想使用groupingBy对它们进行分类怎么办?我是否必须将其分解为多个语句,或者是否可以使用一些流魔术来使其更简单。这是基本代码:Listalbums=newArrayList();Map>map=albums.stream().collect(Collectors.groupingBy(this::getArtist));如果每张专辑只有一位艺术家,效果会很好。但我必须返回一个列表,因为一张专辑可以有很多艺术家。Album和Artist是用来说明