草庐IT

collector

全部标签

java - 为什么 Java Collector.toList() 需要在其返回类型中使用通配符类型占位符?

我一直在进行一些JavaStreams操作,当然它不喜欢我的代码并且拒绝提供有用的错误消息。(作为引用,我对C#和Linq没有任何问题,所以我从概念上理解我试图做的一切。)所以我开始深入研究将显式泛型类型添加到代码中的每个方法,这样我就可以找到问题,因为过去的经验告诉我,这是一条成功的前进道路。环顾四周时,我遇到了一些我不明白的事情。考虑以下来自Java源代码的代码(稍微重新格式化):publicstaticCollector>toList(){returnnewCollectors.CollectorImpl((Supplier>)ArrayList::new,List::add,(

java - 使用 Collectors.summingInt 时如何获取自定义类型而不是 Integer?

我目前正在创建一个Map>像这样,其中Integer代表秒:Map>map=stream.collect(Collectors.groupingBy(x->x.getProject(),Collectors.groupingBy(x->x.getDate(),Collectors.summingInt(t->t.getDuration().toSecondOfDay()))));我怎样才能创建一个Map>? 最佳答案 要将Integer从Collectors.summingInt更改为Duration,您只需替换Collector与

java - java-10 中的 Collectors.toUnmodifiableList

如何使用Collectors.toList/toSet/toMap创建一个UnmodifiableList/Set/Map,因为toList(等等)文档如下:Therearenoguaranteesonthetype,mutability,serializability,orthread-safetyoftheListreturned在java-10之前,您必须提供带有Collectors.collectingAndThen的Function,例如:Listresult=Arrays.asList(1,2,3,4).stream().collect(Collectors.collect

java - Collectors (Java) 中的 groupingby 和映射有什么区别?

看看这段代码。//groupbyprice,uses'mapping'toconvertListtoSetMap>result=items.stream().collect(Collectors.groupingBy(Item::getPrice,Collectors.mapping(Item::getName,Collectors.toSet())));groupingBy和Mapping可以互换吗?它们有什么区别?对于collect()中的第三个参数,如果我使用Collectors.toList()而不是Collectors.toSet()是否会得到相同的输出类型Map?我听说to

具有映射值的 Java 8 Collectors.groupingBy 将收集结果设置为同一组

示例中使用的对象来自包org.jsoup.nodesimportorg.jsoup.nodes.Attribute;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;我需要按键对属性进行分组,结果值为Set.OptionalbuttonOpt=...;Map>stringStringMap=buttonOpt.map(button->button.attributes().asList().stream().collect(groupingBy(Attribute::getKey,mapping(attribut

Java8 Collectors.toMap() 的使用

目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Duplicatekey异常1)异常重现:2)异常截图:3)异常说明:4)异常处理:三、Collectors.toMap()导致的空指针异常1)异常重现:2)异常截图:3)异常说明:4)异常处理:四、总结一、简单介绍Collectors.toMap():JDK8中提供,用于将Stream流转换为Map。用法1:根据某一属性,对对象的实例或属性做映射例如:使用Stream想要将集合的某一属性(例如手机号)作为key,对象本身作为value,这样我们在根据属性获取实例或实例的其他属性时就可以省

go - 如何在 prometheus/client_golang 中禁用 go_collector 指标

我正在使用NewGaugeVec来报告我的指标:elapsed:=prometheus.NewGaugeVec(prometheus.GaugeOpts{Name:"gogrinder_elapsed_ms",Help:"Currenttimeelapsedofgogrinderteststep",},[]string{"teststep","user","iteration","timestamp"})prometheus.MustRegister(elapsed)一切正常,但我注意到我的自定义导出器包含来自prometheus/go_collector.go的所有指标:#HELPg

java - 为什么 Collector 接口(interface)的 combiner 与重载的 collect 方法不一致?

有一个重载方法,collect(),在界面Stream带有以下签名:Rcollect(Suppliersupplier,BiConsumeraccumulator,BiConsumercombiner)还有另一个版本的collect(Collectorcollector),它接收具有前三个函数的对象。接口(interface)属性Collector对应combiner有签名BinaryOperatorcombiner().在后一种情况下,JavaAPI8声明:Thecombinerfunctionmayfoldstatefromoneargumentintotheotherandret

Java 8 Streams : why does Collectors. toMap 对于带有通配符的泛型表现不同?

假设您有一个List数字。List中的值可以是Integer、Double等类型。当您声明这样的List时,它是可以使用通配符(?)或不使用通配符来声明它。finalListnumberList=Arrays.asList(1,2,3D);finalListwildcardList=Arrays.asList(1,2,3D);所以,现在我想stream在List和collect使用MapCollectors.toMap(显然下面的代码只是说明问题的一个例子)。让我们从流式传输numberList开始:finalListnumberList=Arrays.asList(1,2,3D,4D

java - Collectors.groupingBy 不接受空键

在Java8中,这是可行的:Streamstream=Stream.of(ArrayList.class);HashMap>map=(HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass));但这不是:Streamstream=Stream.of(List.class);HashMap>map=(HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass));Maps允许使用null键,并且List.class.getSuperclass