草庐IT

collectors

全部标签

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

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

java - 计算 Stream 的元素

我想计算流中的不同元素,想知道为什么Streamstream=Stream.of("a","b","a","c","c","a","a","d");Mapcounter1=stream.collect(Collectors.toMap(s->s,1,Integer::sum));没用。Eclipse告诉我ThemethodtoMap(Function,Function,BinaryOperator)inthetypeCollectorsisnotapplicableforthearguments((s)->{},int,Integer::sum)顺便说一下,我知道那个解决方案:Mapc

Java 8 Streams - 对元组流进行分组

编辑::我正在改写问题以便更清楚这段代码是我写的List>list=newArrayList>();list.add(newImmutablePair(1,1));list.add(newImmutablePair(1,1));list.add(newImmutablePair(1,1));list.add(newImmutablePair(2,2));list.add(newImmutablePair(2,2));list.add(newImmutablePair(2,2));list.add(newImmutablePair(3,3));list.add(newImmutableP

java.util.stream.Collectors : Why is the summingInt implemented with an array?

标准收集器summingInt在内部创建一个长度为1的数组:publicstaticCollectorsummingInt(ToIntFunctionmapper){returnnewCollectorImpl(()->newint[1],(a,t)->{a[0]+=mapper.applyAsInt(t);},(a,b)->{a[0]+=b[0];returna;},a->a[0],CH_NOID);}我想知道是否可以只定义:privateCollectorsummingInt(ToIntFunctionmapper){returnCollector.of(()->0,(a,t)->

Java 8 Lambda Collectors.summingLong 多列?

我的POJO定义如下:classEmployeeDetails{privateStringdeptName;privateDoublesalary;privateDoublebonus;...}目前,我有GroupBy'deptName'的lambda表达式:$set.stream().collect(Collectors.groupingBy(EmployeeDetails::getDeptName,Collectors.summingLong(EmployeeDetails::getSalary));问题是否可以对不止一列进行求和?我需要在一个表达式中而不是多次计算两个字段薪水和奖

java - 如何将 for-each 循环重写为流?

我有一个名为“Book”的数据结构,它包含以下字段:publicfinalclassBook{privatefinalStringtitle;privatefinalBookTypebookType;privatefinalListauthors;}我的目标是派生一个Map>来自List使用流API。为了实现它,首先,我做了一个for-each循环来阐明解决方案的步骤,然后我将它重写为基于流的方法,一步一步:Map>authorListBookType=newHashMap();books.stream().forEach(b->b.getAuthors().stream().forE

Java:groupingBy子值作为值

比方说,我有一个对象Person,其字段类型为FirstName和LastName。现在我还有一个List我喜欢使用流。现在我想生成一个Map>为了将具有相同名字的人分组。如何在不编写太多代码的情况下解决这个问题?到目前为止我的方法是personList.stream().collect(Collectors.groupingBy(Person::getFirstName,person->person.getLastName()//thisseemstobewrong));但似乎这是分配map值的错误方法。我应该改变什么?或者我应该将.reduce与newHashMap>()一起使用吗

java - Collectors.toSet() 是否总是返回 HashSet ?什么是契约(Contract)?

Javadoc说ReturnsaCollectorthataccumulatestheinputelementsintoanewSet.Therearenoguaranteesonthetype,mutability,serializability,orthread-safetyoftheSetreturned;ifmorecontroloverthereturnedSetisrequired,usetoCollection(java.util.function.Supplier).所以Collectors.toCollection(HashSet::new)似乎是避免这里出现问题的好

java - 使用流收集时 jdk8 与 jdk11 的不同行为

介绍我确实对jdk11(及更高版本)在流和收集方法方面的行为有疑问。我确实想获取流式传输资源的参数化容器的值,并在最后使用.collect(Collectors.toSet())收集这些值.问题描述当我用jdk8编译我的代码时它工作得很好。但是作为我们还要支持jdk11,我运行了编译但失败了,因为Error:(136,17)java:incompatibletypes:java.lang.Objectcannotbeconvertedtojava.util.Set(同样适用于openJdk11)用例想象一下下面的情况。我有一个基本上是数据容器的类。此容器可以包含单个值或值列表。在我的应

我们一起聊聊自定义 OpenTelemetry Collector 容器镜像

OpenTelemetryCollector有两个官方发行版:Core和Contrib。Core发行版是Collector的基础发行版,供OTel开发人员进行开发和测试。它包含一组基本的扩展、连接器、接收器、处理器和导出器。Contrib发行版供非OTel开发人员进行实验和学习。它还扩展了Core发行版,并包含由第三方(包括供应商和个人社区成员)创建的组件,这些组件对整个OpenTelemetry社区非常有用。不管Core还是Contrib都不应该成为你生产工作负载的一部分。仅仅使用Core本身太过简单,无法满足组织的需求(尽管它提供的组件都是必须的);虽然Contrib中提供的组件足够全面,