【问题标题】:Stream mapping multiple types流映射多种类型
【发布时间】:2021-08-28 19:04:51
【问题描述】:

如何将此代码转换为使用流的代码?一行,如果可能的话:

List<Key<String, ?>> keys = Lists.newArrayList();
for (Map.Entry<String, House> entry : Houses.all().entrySet()) {
    keys.add(new Key<>(entry.getKey(), 
    HousesTypes.getFor(entry.getValue()));
}
return ImmutableList.of(houseConstructor.newInstance(5, keys));

【问题讨论】:

  • "如果可能的话,我如何使用流转换此代码?" - 反问:你为什么想要一个单行?
  • @Turing85 更干净,看起来更好。
  • “更干净”和“看起来更好”都是基于意见的指标。
  • @Steven “Cleaner”客观上可以更干净,“看起来更好”也可以客观上看起来更好,但是“单行”这个词我不确定。我不确定您是否会将其放在屏幕上,就其本身而言,一行;但是,如果您的意思是一个不间断的链接表达式,那是您可以做的事情。就我个人而言,如此复杂的 sn-ps 几乎不可能是“单行”代码,无论您在其中表示什么。
  • @GiorgiTsiklauri “创建一个函数并调用它”啊哈

标签: java guava


【解决方案1】:

嗯,IMO“在一条线上”不是使用Stream 的好点,因为它们是有代价的,但你可以这样做:

返回 ImmutableList.of(
  houseConstructor.newInstance(
    5、
    房屋.all()
      .entrySet()
      。溪流()
      .map(entry -> new Key(entry.getKey(), HousesTypes.getFor(entry.getValue()))
      .collect(Collectors.toList())
  )
);

【讨论】:

    猜你喜欢
    • 2022-12-07
    • 1970-01-01
    • 2021-04-11
    • 2012-03-04
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多