当前位置: 首页 > 知识库问答 >
问题:

Java8流-在流操作期间调用“map”,无需保存为变量

韩安顺
2023-03-14

我找不到很多答案,尽管我认为这是不可能的,但我很好奇 - 在Java8流中是否有“引用”或“调用”通过.收集器(收集器)创建的HashMap(键 -

myHashSet.stream().
.filter(i -> i != null)
.collectors(Collectors.toMap(key -> "key", val -> "val")
.forEach((k,v) -> {

   // HERE IS WHERE I WANT TO CALL THE MAP CREATED ABOVE
   if( MAP.contains("someRandomValue") {
    
    }


}));

我假设你无法做到这一点,但我希望有某种方法或东西,这样我就不必“杀死”流,即将映射保存到变量,然后继续将其再次流出来等等。。。


共有2个答案

空翼
2023-03-14

我@shmosel的帮助下使用收集AndThen解决了这个问题。这是最接近我想做的事情。

myArrayList.stream().
.collect(Collectors.collectingAndThen(Collectors.toMap(key -> key.getName(), val -> val), map -> map.forEach((key, val) -> System.out.println(map.contains(key)));
乜建柏
2023-03-14

Stream 中的收集操作是终端操作。因此,收集后没有。你必须做下面这样的事情。

var myMap = myHashSet.stream().
.filter(i -> i != null)
.collectors(Collectors.toMap(key -> "key", val -> "val");

myMap.forEach((k,v) -> {

   // HERE IS WHERE I WANT TO CALL THE MAP CREATED ABOVE
   if( MAP.contains("someRandomValue") {
    
    }


}));

以下文章介绍了 Stream 中可用的中间操作。

https://www.javacodegeeks.com/2020/04/java-8-stream-intermediate-operations-methods-examples.html

 类似资料:
  • 任何人都可以指向一个官方Java文档,该文档描述了流将调用每个元素的每个“无干扰和无状态”中间操作的次数。 例如: 以上代码当前将调用< code>check方法4次。 在JDK的当前或未来版本中,方法的执行次数是否可能多于或少于从List或任何其他标准JavaAPI创建的流中的元素数量?

  • 我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码

  • 我试图找出如何在Java8 Stream上实现自定义中间操作。似乎我被锁在外面了:( 具体地说,我想获取一个流,并返回每个条目,包括第一个具有特定值的条目。我想在那之后停止发电,让它短路。 它正在对输入数据进行一系列验证检查。如果有第一个错误,我想停止,但我想在途中整理警告。而且因为这些验证检查可能很昂贵——例如,涉及数据库查找——我只想运行所需的最小集。 所以代码应该是这样的: 看来我应该可以用

  • 我有以下两门课: : : 我希望进行流操作,以便: 将映射到中的 的和分别合并到和中,对于所有具有相同id的s 为此,我编写了以下一段代码: 它的工作和输出如下: 但我相信有一种更好的方式可以达到同样的效果。任何一个指针都很好。

  • 我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括 因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢? 我尝试使用for循环,但我希

  • 例如,对于{A,B}和{X,Y}这两个流,我希望它生成值流{AX,AY,BX,BY}(简单的串联用于聚合字符串)。到目前为止,我已经想出了这段代码: 这是我想要的用例: 预期结果:。 溪流消耗在哪里?按平面地图?很容易修好吗?