草庐IT

Collectors

全部标签

java - Collectors.groupby 用于 Map<String,List<String>

如果解决方案非常明显但我似乎无法弄清楚如何做到这一点,请原谅我publicstaticvoidmain(String[]args){Mapmap=newHashMap();map.put("b1","a1");map.put("b2","a2");map.put("b3","a1");Map>mm=map.values().stream().collect(Collectors.groupingBy(m->m));System.out.println(mm);}我想根据HashMap中的值进行分组。我希望输出为{a1=[b1,b3],a2=[b2]}但它目前是{a1=[a1,a1],a

java - 将 List<Long> 转换为计算出现次数的 Map<Long, Long>

我正在玩Java8,我知道通过阅读文档这一定是可能的,但我只是不知道如何去做。我有以下工作代码:longfactorProduct=LongStream.rangeClosed(1,maxFactor).filter(this::isOptimalFactor).reduce((i,j)->i*j).getAsLong();ListprimeFactors=primeFactors(factorProduct);重要的是我有一个List可能在某些Long上有重复项数。现在我想把它转换成Map以元素作为键,以出现的值作为值。我认为:MapprimeFactorCount=primeFac

java - 在 java.util.stream.Stream 接口(interface)的两个 collect 方法中,其中一个构造不佳吗?

在java.util.stream.Stream接口(interface)中,Rcollect(Suppliersupplier,BiConsumeraccumulator,BiConsumercombiner);组合器是一个BiConsumer,而在Rcollect(Collectorcollector);组合器是一个BinaryOperator这不过是一个BiFunction.虽然后一种形式清楚地定义了组合后组合对象的引用,但前一种形式没有。那么任何Stream实现库如何知道前一种情况下的组合对象是什么? 最佳答案 在Java9

Java 8 列表到嵌套映射

我有一个A类的列表classA{privateIntegerkeyA;privateIntegerkeyB;privateStringtext;}我想将aList传输到由keyA和keyB映射的嵌套Map所以我创建了以下代码。Map>>aMappedByKeyAAndKeyB=aList.stream().collect(Collectors.collectingAndThen(Collectors.groupingBy(A::getKeyA),result->{Map>>nestedMap=newHashMap>>();result.entrySet().stream().forEa

Java流过滤器值的总和

我有一个类叫做MonitoredData用它描述一个Activity,它的开始时间和结束时间。属性是activityLabel,startTime,endTime.我必须使用流对这些Activity进行分组和过滤,这些Activity的总持续时间超过10小时。我设法计算了持续时间的总和,并使用以下方法根据Activity对它们进行了分组:Mapmap4=newHashMap();map4=data.stream().collect(Collectors.groupingBy(MonitoredData::getActivity,Collectors.summingLong(Monito

java - 为什么 java 收集流对每个 getter 运行两次?

我有一个包含项目的列表,其中每个项目都是一个具有我感兴趣的getter方法的对象。我想遍历整个列表以总结所有这些getter结果。当我使用java8流时,它看起来像这样:doublecurrentProduction=itemList.stream().collect(Collectors.summingDouble((e)->e.getProduction(param)));在普通的旧java中,它看起来像这样:for(Itemitem:itemList){currentProduction+=item.getProduction(param);}这两种方法产生完全相同的结果,但我的

java - 如何使用 lambda 初始化 map ?

我想在单个语句(可能包含多个嵌套语句)中声明一个完全填充的map字段,如下所示:privatestaticfinalMapmap=something-returning-an-unmodifiable-fully-populated-HashMap;匿名初始化器不会做,因为调用返回新填充映射的函数不会做的原因相同:它们需要两个顶级语句:一个用于变量声明,一个用于方法或初始化器.双花括号({{和}})惯用语会起作用,但它创建了一个扩展HashMap的全新类,我不喜欢由此带来的开销。Java8的lambda是否提供了更好的方法来实现这一目标? 最佳答案

java - 在 Java 8 中创建嵌套的父子列表

我是Java8的新手,需要解决以下问题。我有两个类如下:classPerson{Stringname;intage;Listaddress;}classAddress{Stringstreet;Stringcity;Stringcountry;}现在我有一个来自数据库的列表,如下所示:ListfindPerson;adam26adam26bill31现在我需要将同一个人对象与不同地址对象合并为一个对象,如下所示?ListfindPerson;adam26bill31这如何在Java8流中完成? 最佳答案 我建议您实现equals和h

java - 使用 Java 8 创建 int 事件映射

我知道我的问题与CountintoccurrenceswithJava8非常相似,但我仍然无法解决我的案子,这一定更容易解决。需要计算整数流中整数重复的次数(将来自文件,可能多达1000000个整数)。我认为创建一个映射可能会有用,其中整数将是一个键,出现次数将是一个值。异常(exception)是Error:(61,66)java:methodcollectininterfacejava.util.stream.IntStreamcannotbeappliedtogiventypes;required:java.util.function.Supplier,java.util.fun

java - 使用 Collectors.groupingby 创建集合的映射

我知道如何创建Map>,使用Collectors.groupingBy:Map>listMap=items.stream().collect(Collectors.groupingBy(s->s.key));我将如何修改该代码以创建Map>?或者我可以不使用stream来做吗?因此必须使用for循环等手动创建它? 最佳答案 使用Collectors.toSet()作为groupingBy中的下游:Map>map=items.stream().collect(Collectors.groupingBy(s->s.key,Collect