java-stream相关内容

collect(supplier, accumulator, combiner)的combiner的组合顺序在哪里定义?

Java API 文档声明 collect 方法的 combiner 参数必须是: 用于组合两个值的关联、无干扰、无状态函数,必须与累加器函数兼容 一个combiner是一个BiConsumer,它接收两个R类型的参数并返回void.但是文档没有说明我们是否应该将元素组合到第一个或第二个参数中? 例如,以下示例可能会给出不同的结果,具体取决于组合顺序为:m1.addAll(m2) ..
发布时间:2022-01-22 10:36:50 Java开发

如何使用 Java 8 lambda 按顺序计算多个数字的平均值

如果我有集合 Point ,如何在单次迭代中使用 Java 8 流计算 x,y 的平均值. 以下示例创建两个流 &在输入集合上迭代两次以计算 x & 的平均值是的.他们是否有任何方法可以使用 java 8 lambda 在单次迭代中计算平均 x,y: List点=Arrays.asList(new Point2D.Float(10.0f,11.0f), new Point2D.Float( ..
发布时间:2022-01-22 10:36:26 Java开发

如何在 Stream 链中调用 setter

如何在不使用 forEach() 的情况下调用 Stream 链中的 setter? 列表newFoos = foos.stream().filter(foo -> Foo::isBlue).map(foo -> foo.setTitle("Some value"))//我不能用这个因为还要把数据类型改成Object.collect(Collectors.toList()); 解决方 ..
发布时间:2022-01-22 10:36:16 Java开发

检查自定义对象列表是否与 Java 8 中的属性具有相同的值

我是 Java 8 的新手.我有一个 A 类型的自定义对象列表,其中 A 如下所示: 类 A {内部标识;字符串名称;} 我想确定该列表中的所有对象是否具有相同的名称.我可以通过遍历列表并捕获名称的先前值和当前值来做到这一点.在这种情况下,我发现 如何计算列表中某个属性具有相同值的自定义对象的数量.但是有没有更好的方法在 java 8 中使用流来做同样的事情? 解决方案 一种方法是获 ..
发布时间:2022-01-22 10:35:52 Java开发

用于 Guava 不可变集合的 Java 8 收集器?

我真的很喜欢 Java 8 流和 Guava 的不可变集合,但我不知道如何将两者结合使用. 例如,如何实现 Java 8 收集器,将流结果收集到 ImmutableMultimap? 加分:我希望能够提供键/值映射器,类似于 Collectors.toMap() 有效. 解决方案 从21版开始,可以 .collect(ImmutableSet.toImmutableSet() ..
发布时间:2022-01-22 10:35:47 Java开发

根据独立的谓词流式传输集合并收集到多个结果

我正盯着一些我试图将其转换为纯函数式风格的命令式代码.基本上在 inputSet 上有一个迭代的 for 循环,我在其中检查 3 个谓词并根据哪个谓词匹配填充 3 个 outputSets.输出集可以重叠.如何使用 Java 8 流/映射/过滤器/等以纯函数方式执行此操作? 解决方案 最简单的解决方案(除了保持原样更容易)是创建三个单独的流: 设置set1 = inputSet.stre ..
发布时间:2022-01-22 10:35:34 Java开发

如何使用 Stream API java 8 一起打印两个列表?

我有两个列表如下 列表names = Arrays.asList("James","John","Fred");列表年龄 = Arrays.asList(25,35,15); 我想做的是像这样打印这两个列表 詹姆斯:25约翰:35弗雷德:15 用经典的方法很容易做到 for(int i=0;i 有没有办法使用 Stream API java 8 来做到这一点? 我能做的是 ..
发布时间:2022-01-22 10:35:18 Java开发

将消费者转换为函数

Function 接口的许多 lambdas 采用这种形式 t ->{//对 t 做点什么返回 t;} 我经常这样做,以至于我为此编写了一个这样的方法. 静态函数消费然后返回(消费者消费者){返回 t ->{消费者.accept(t);返回 t;};} 这使我能够做这样的非常好的事情: IntStream.rangeClosed('A', 'Z').mapToObj(a ..
发布时间:2022-01-22 10:35:11 Java开发

.stream() 和 Stream.of 有什么区别?

从集合中创建流的最佳方法是: 最终集合实体 = someService.getArrayList(); entities.stream(); Stream.of(entities); 解决方案 第二个没有做你想的那样!它确实不为您提供包含集合元素的流;相反,它会给你一个带有单个元素的流,它是集合本身(而不是它的元素). 如果你需要一个包含集合元素的流,那么你必须使用ent ..
发布时间:2022-01-22 10:35:02 Java开发

使用 Collection.stream 按特定属性进行动态分组

我正在尝试使用 Java 8 Collection-Stream 按多个属性对对象列表进行分组. 这很好用: 公共类 MyClass{公共字符串标题;公共字符串类型;公共字符串模块;public MyClass(字符串标题,字符串类型,字符串模块){this.type = 类型;this.title = 标题;这个.module=模块;}}列出数据 = 新的 ArrayL ..
发布时间:2022-01-22 10:34:29 Java开发

获取 Java 8 流的最小值和最大值的简洁方法

是否有一种简洁的方法可以一次性提取流的最小值和最大值(基于某个比较器)? 似乎有很多方法可以单独获取最小值和最大值,或者我可以将流排序为临时对象,例如: 列表sorted = Stream.of(...).sorted().collect(Collectors.toList());T min = sorted.get(0);T max = sorted.get(sorted.size ..
发布时间:2022-01-22 10:33:35 Java开发

如何在java中将树结构转换为节点流

我想在 Java8 节点流中转换树. 这是一个存储数据的节点树,可供选择: 公共类 SelectTree;{私人 D 数据;私人布尔选择=假;私有 SelectTree父母;私有最终列表>children = new ArrayList();公共 SelectTree(D 数据,SelectTree 父级){this.data = 数据;如果(父!= ..
发布时间:2022-01-22 10:33:19 其他开发