草庐IT

collectors

全部标签

Collectors.toMap()的基本使用方法

介绍:1、Java8流的新类java.util.stream.Collectors实现了java.util.stream.Collector接口,同时又提供了大量的方法对流(stream)的元素执行mapandreduce操作,或者统计操作;2、Collectors.toMap()是Java8引入的流特性,可以把集合转换为Map集合,转换对象中的key不可重复,重复会报错3、如果key重复,可以使用合并函数来取其默认值,避免报错使用一、key不重复场景//基础数据ListpersonDtos=ListUtil.toList(newPersonDto(1,"张三","西安",22),newPer

java - Collectors.toMap() 中的错误报告是否已损坏?

这个问题在这里已经有了答案:HowtogetthekeyinCollectors.toMapmergefunction?(3个答案)Collectors.toMapwithsamekeys(printsamekey)(2个答案)AlternativeforthrowingMergerinJava8(1个回答)WhydoesCollectors.toMapreportvalueinsteadofkeyonDuplicateKeyerror?(7个答案)关闭4年前。Liststrings=Arrays.asList("3","55","3");Mapmap=strings.stream()

java - Java 的 Collectors.toSet() 是否保证允许空值?

Set接口(interface)不promise实现是否允许null元素。每个实现都应该在其文档中声明这一点。Collectors.toSet()promise返回Set的实现,但明确“不保证返回的Set的类型、可变性、可序列化性或线程安全性”。没有提到空安全。OpenJDK中Collectors.toSet()的当前实现始终使用HashSet,它允许空元素,但这在未来可能会改变,其他实现可能会有所不同.如果Set实现禁止null元素,它会在不同时间抛出NullPointerException,特别是在尝试add(null)时.看起来如果Collectors.toSet()决定使用nu

使用 OpenTelemetry Collector 收集 Kubernetes 日志数据

前面我们介绍了如何通过OpenTelemetryCollector来收集Kubernetes集群的指标数据,接下来我们再来了解下如何收集集群的日志记录数据。安装Loki首先我们需要部署Loki来收集日志数据,同样我们这里使用HelmChart来快速部署,不过需要注意同样不需要部署任何日志采集器,因为我们将使用OpenTelemetryCollector来收集日志数据,然后再将其发送到Loki中。$helmrepoaddgrafanahttps://grafana.github.io/helm-chart$helmrepoupdate我们这里创建一个 loki-values.yaml 文件来配置

使用 OpenTelemetry Collector 采集 Kubernetes 指标数据

Kubernetes已成为一个被广泛采用的行业工具,对可观测性工具的需求也在不断增加。为此,OpenTelemetry创建了许多不同的工具,来帮助Kubernetes用户观察他们的集群和服务。接下来我们将开始使用OpenTelemetry监控Kubernetes集群,将专注于收集Kubernetes集群、节点、pod和容器的指标和日志,并使集群能够支持发出OTLP数据的服务。Kubernetes以多种不同的方式暴露了许多重要的遥测数据。它具有用于许多不同对象的日志、事件和指标,以及其工作负载生成的数据。为了收集这些数据,我们将使用OpenTelemetryCollector。该收集器可以高效地

java - List<Object[]> 到 Java 8 中的 Map<K, V>

通常需要转换查询的结果,例如:selectcategory,count(*)fromtablegroupbycategory到一个map,其中键是类别,值是属于同一类别的记录数。许多持久性框架返回这样的查询结果List,其中对象数组包含两个元素(每个返回的结果集行的类别和计数)。我正在尝试找到最易读的方式将此列表转换为相应的map。当然,传统方法会涉及创建map并手动放置条目:Mapmap=newHashMap();list.stream().forEach(e->map.put((String)e[0],(Integer)e[1]));我想到的第一个单线是利用现成可用的Collect

java - Collectors.groupingBy() 中的映射值

为了这个例子,假设我有一个简单的类型Tuple有两个属性:interfaceTuple{TgetFirst();UgetSecond();}现在我想将一组(first,second)元组转换成一个映射,将每个first值映射到一组所有second值包含在具有特定first值的元组中。groupSecondByFirst()方法显示了一种可能的实现方式,它可以执行我想要的操作:Map>groupSecondByFirst(Set>tuples){Map>result=newHashMap();for(Tuplei:tuples){result.computeIfAbsent(i.getF

Java Collectors.groupingBy()---List 是有序的吗?

对于Collectors.groupingBy()返回Map>是否暗示List是为了评估流吗?我没有看到对列表排序的明确描述,而并发版本明确说明没有排序。如果它不是以某种方式订购的,我希望它是一个集合,但我看不出它可能是什么其他订购,除了收到的订单。我希望它能保证每个列表中的最后一个值是该组收到的最后一个值。 最佳答案 groupingBy()的文档说:ImplementationRequirements:Thisproducesaresultsimilarto:groupingBy(classifier,toList());toL

java - Collectors.summingInt() 与 mapToInt().sum()

当您想对流中的整数值求和时,主要有两种方法:ToIntFunctionmapFunc=...intsum=stream().collect(Collectors.summingInt(mapFunc))intsum=stream().mapToInt(mapFunc).sum()第一个涉及对返回的整数进行装箱和拆箱,但第二个涉及一个额外的步骤。哪个更高效/更清晰? 最佳答案 您正在查看两个不同用例的交集。使用mapToInt(...)允许您在终端操作之前链接其他IntStream操作。相反,Collectors.summingInt

java - 手动链接 GroupBy 收集器

我想对一个人的列表进行分组。一个人有一些属性,如姓名、国家、城镇、邮政编码等。我写了静态代码,效果很好:ObjectgroupedData=data.stream().collect(groupingBy(Person::getName,Collectors.groupingBy(Person::getCountry,Collectors.groupingBy(Person::getTown))));但问题是,它不是动态的。有时我只想按名称和城镇分组,有时按属性分组。我怎样才能做到这一点?也欢迎使用非Java8解决方案。 最佳答案