【问题标题】:Why Map api doesn't provide stream capabilities in Java? [closed]为什么 Map api 在 Java 中不提供流功能? [关闭]
【发布时间】:2020-01-06 02:05:34
【问题描述】:

我同意我们可以在任何 Map 上获取 entrySet,然后创建它的流。但我仍然想知道在 Java 8 中没有为 Map 层次结构提供流功能的原因是什么。

【问题讨论】:

  • 流是元素的流。地图的元素是什么?键集?价值观?入口集?从这个角度来看,我发现根据各自的需求进行流式传输是非常明智的。
  • 同样的原因你不能循环 Map

标签: java collections java-stream


【解决方案1】:

流 API 允许您以抽象方式处理单个元素(并行、顺序、动态生成、无限供应、yadayada)。

地图的每个“项目”有 2 个元素(一个键,一个值)。

流所具有的每个方法都需要调整为采用 2 个参数,或者,我们通过让您流过作为单个元素的 Map.Entry 项目来重用流 API 提供的所有基础架构。

然后问题归结为:为什么没有一些语法糖/API 快捷方式以便我可以写map.stream() 而不是map.entrySet().stream()。那是因为 java 更喜欢这样的选择而不是隐含的:你想流过条目吗?好的..写那个。

【讨论】:

    【解决方案2】:

    让我们想象一下 Map 中有方法 stream。 所以它应该同时返回一个键和值的流,对吗? 而且由于 BiStream 还没有被引入(不确定它是否会被引入),所以唯一的可能是将两者包装到单个对象中(Entry?)。但是,您可以从您已经声明的 entrySet 中获取条目流。 因此,通过简单的委托向 entrySet 添加这样的方法听起来并不合理。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多