java-stream相关内容
Java API 文档声明 collect 方法的 combiner 参数必须是: 用于组合两个值的关联、无干扰、无状态函数,必须与累加器函数兼容 一个combiner是一个BiConsumer,它接收两个R类型的参数并返回void.但是文档没有说明我们是否应该将元素组合到第一个或第二个参数中? 例如,以下示例可能会给出不同的结果,具体取决于组合顺序为:m1.addAll(m2)
..
如果我有集合 Point ,如何在单次迭代中使用 Java 8 流计算 x,y 的平均值. 以下示例创建两个流 &在输入集合上迭代两次以计算 x & 的平均值是的.他们是否有任何方法可以使用 java 8 lambda 在单次迭代中计算平均 x,y: List点=Arrays.asList(new Point2D.Float(10.0f,11.0f), new Point2D.Float(
..
如何在不使用 forEach() 的情况下调用 Stream 链中的 setter? 列表newFoos = foos.stream().filter(foo -> Foo::isBlue).map(foo -> foo.setTitle("Some value"))//我不能用这个因为还要把数据类型改成Object.collect(Collectors.toList()); 解决方
..
流a = Stream.of("一", "三", "五");流b = Stream.of("二", "四", "六"); 我需要做什么才能使输出如下? //一个//二//三//四个//五//六 我查看了 concat 但正如 javadoc 解释的那样,它只是一个接一个地附加,它不会交错/穿插. 流out = Stream.concat(a, b);out.forEach(Sy
..
..
我是 Java 8 的新手.我有一个 A 类型的自定义对象列表,其中 A 如下所示: 类 A {内部标识;字符串名称;} 我想确定该列表中的所有对象是否具有相同的名称.我可以通过遍历列表并捕获名称的先前值和当前值来做到这一点.在这种情况下,我发现 如何计算列表中某个属性具有相同值的自定义对象的数量.但是有没有更好的方法在 java 8 中使用流来做同样的事情? 解决方案 一种方法是获
..
我真的很喜欢 Java 8 流和 Guava 的不可变集合,但我不知道如何将两者结合使用. 例如,如何实现 Java 8 收集器,将流结果收集到 ImmutableMultimap? 加分:我希望能够提供键/值映射器,类似于 Collectors.toMap() 有效. 解决方案 从21版开始,可以 .collect(ImmutableSet.toImmutableSet()
..
我正盯着一些我试图将其转换为纯函数式风格的命令式代码.基本上在 inputSet 上有一个迭代的 for 循环,我在其中检查 3 个谓词并根据哪个谓词匹配填充 3 个 outputSets.输出集可以重叠.如何使用 Java 8 流/映射/过滤器/等以纯函数方式执行此操作? 解决方案 最简单的解决方案(除了保持原样更容易)是创建三个单独的流: 设置set1 = inputSet.stre
..
我有两个列表如下 列表names = Arrays.asList("James","John","Fred");列表年龄 = Arrays.asList(25,35,15); 我想做的是像这样打印这两个列表 詹姆斯:25约翰:35弗雷德:15 用经典的方法很容易做到 for(int i=0;i 有没有办法使用 Stream API java 8 来做到这一点? 我能做的是
..
Function 接口的许多 lambdas 采用这种形式 t ->{//对 t 做点什么返回 t;} 我经常这样做,以至于我为此编写了一个这样的方法. 静态函数消费然后返回(消费者消费者){返回 t ->{消费者.accept(t);返回 t;};} 这使我能够做这样的非常好的事情: IntStream.rangeClosed('A', 'Z').mapToObj(a
..
从集合中创建流的最佳方法是: 最终集合实体 = someService.getArrayList(); entities.stream(); Stream.of(entities); 解决方案 第二个没有做你想的那样!它确实不为您提供包含集合元素的流;相反,它会给你一个带有单个元素的流,它是集合本身(而不是它的元素). 如果你需要一个包含集合元素的流,那么你必须使用ent
..
..
我有一个如下所示的集合,我想过滤掉除非月末日期之外的所有内容. 2010-01-01=2100.00,2010-01-31=2108.74,2010-02-01=2208.74,2010-02-28=2217.92,2010-03-01=2317.92,2010-03-31=2327.57,2010-04-01=2427.57,2010-04-30=2437.67,2010-05-01=2537
..
我正在尝试使用 Java 8 Collection-Stream 按多个属性对对象列表进行分组. 这很好用: 公共类 MyClass{公共字符串标题;公共字符串类型;公共字符串模块;public MyClass(字符串标题,字符串类型,字符串模块){this.type = 类型;this.title = 标题;这个.module=模块;}}列出数据 = 新的 ArrayL
..
..
如何在 Java 8 中将 Map 转换为 List>? 我写了这个实现,但是效率不高 MapimplicitDataSum = new ConcurrentHashMap();//....列出>mostRelevantTitles = new ArrayList();隐式DataSum.entrySet().溪流().sorted(Com
..
考虑以下代码: 列表奇数 = 新 ArrayList();列表偶数=空;列表myList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);甚至 = myList.stream().filter(项目-> {if(item%2 == 0) { return true;}别的 {奇数.add(item);返回假;}}).collect(Collector
..
是否有一种简洁的方法可以一次性提取流的最小值和最大值(基于某个比较器)? 似乎有很多方法可以单独获取最小值和最大值,或者我可以将流排序为临时对象,例如: 列表sorted = Stream.of(...).sorted().collect(Collectors.toList());T min = sorted.get(0);T max = sorted.get(sorted.size
..
..
我想在 Java8 节点流中转换树. 这是一个存储数据的节点树,可供选择: 公共类 SelectTree;{私人 D 数据;私人布尔选择=假;私有 SelectTree父母;私有最终列表>children = new ArrayList();公共 SelectTree(D 数据,SelectTree 父级){this.data = 数据;如果(父!=
..