草庐IT

Collectors

全部标签

java - Collectors.toMap() 和 Collectors.groupingBy() 收集成 Map 的区别

我想创建一个Map来自List的Points并在映射中使用相同的parentId映射列表中的所有条目,例如Map>.我用了Collectors.toMap()但它没有编译:Map>pointByParentId=chargePoints.stream().collect(Collectors.toMap(Point::getParentId,c->c)); 最佳答案 TLDR:收集到Map包含单个键值(Map),使用Collectors.toMap().Collection到Map包含多个键值(Map>),使用Collectors.

java - 如何使用 Java 8 流和自定义 List 和 Map 供应商将 List<V> 转换为 Map<K、List<V>>?

转换很容易List进入Map>.例如:publicMap>getMap(Liststrings){returnstrings.stream().collect(Collectors.groupingBy(String::length));}但我想用我自己的List和Map供应商。我想出了这个:publicMap>getMap(Liststrings){returnstrings.stream().collect(Collectors.toMap(String::length,item->{Listlist=newArrayList();list.add(item);returnlist

java - 如何使用 Java 8 流和自定义 List 和 Map 供应商将 List<V> 转换为 Map<K、List<V>>?

转换很容易List进入Map>.例如:publicMap>getMap(Liststrings){returnstrings.stream().collect(Collectors.groupingBy(String::length));}但我想用我自己的List和Map供应商。我想出了这个:publicMap>getMap(Liststrings){returnstrings.stream().collect(Collectors.toMap(String::length,item->{Listlist=newArrayList();list.add(item);returnlist

java - 收集 HashMap<String, List<String>> java 8

我希望能够将List转换为HashMap,其中键是elementName,值是某物的列表随机(在本例中为元素名称)。所以简而言之,我想要(A->List(A),B->List(B),C->List(C))。我尝试使用toMap()并将keyMapper和ValueMapper传递给它,但出现编译错误。如果有人可以帮助我,我将不胜感激。谢谢!publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubListlist=Arrays.asList("A","B","C","D");Map>map=list.stream(

java - 收集 HashMap<String, List<String>> java 8

我希望能够将List转换为HashMap,其中键是elementName,值是某物的列表随机(在本例中为元素名称)。所以简而言之,我想要(A->List(A),B->List(B),C->List(C))。我尝试使用toMap()并将keyMapper和ValueMapper传递给它,但出现编译错误。如果有人可以帮助我,我将不胜感激。谢谢!publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubListlist=Arrays.asList("A","B","C","D");Map>map=list.stream(

java.util.stream.Collectors 与 EnumSet 流

我正在尝试使用下面的位掩码代替代码publicstaticSetfromBitFlags(intbitFlag){returnALL_OPTS.stream().filter(a->(a.ameityId&bitFlag)>0).collect(Collectors.toSet());}我想返回EnumSet而不是一个普通的集合(不想因为强制转换而放弃EnumSet的用处)。需要一些关于如何创建自定义收集器来收集EnumSet的说明。 最佳答案 您可以使用toCollection(Supplier):returnALL_OPTS.s

java.util.stream.Collectors 与 EnumSet 流

我正在尝试使用下面的位掩码代替代码publicstaticSetfromBitFlags(intbitFlag){returnALL_OPTS.stream().filter(a->(a.ameityId&bitFlag)>0).collect(Collectors.toSet());}我想返回EnumSet而不是一个普通的集合(不想因为强制转换而放弃EnumSet的用处)。需要一些关于如何创建自定义收集器来收集EnumSet的说明。 最佳答案 您可以使用toCollection(Supplier):returnALL_OPTS.s

java - Stream.skip 行为与无序终端操作

我已经阅读了this和this问题,但仍然怀疑观察到的Stream.skip行为是否是JDK作者的意图。让我们简单地输入数字1..20:Listinput=IntStream.rangeClosed(1,20).boxed().collect(Collectors.toList());现在让我们创建一个并行流,将unordered()与skip()以不同的方式组合并收集结果:System.out.println("skip-skip-unordered-toList:"+input.parallelStream().filter(x->x>0).skip(1).skip(1).unor

java - Stream.skip 行为与无序终端操作

我已经阅读了this和this问题,但仍然怀疑观察到的Stream.skip行为是否是JDK作者的意图。让我们简单地输入数字1..20:Listinput=IntStream.rangeClosed(1,20).boxed().collect(Collectors.toList());现在让我们创建一个并行流,将unordered()与skip()以不同的方式组合并收集结果:System.out.println("skip-skip-unordered-toList:"+input.parallelStream().filter(x->x>0).skip(1).skip(1).unor

java - 为什么Java 8 'Collector' 类是这样设计的?

我们知道Java8引入了一个新的StreamAPI,java.util.stream.Collector是定义如何聚合/收集数据流的接口(interface)。但是,收集器界面是这样设计的:publicinterfaceCollector{Suppliersupplier();BiConsumeraccumulator();BinaryOperatorcombiner();Functionfinisher();}为什么不是这样设计的?publicinterfaceCollector{Asupply();voidaccumulate(Aaccumulator,Tvalue);Acombi