当前位置: 首页 > 面试题库 >

使用分隔符插入流中的元素

郑星辰
2023-03-14
问题内容

有没有一种很好的方法可以使用Java流以相同类型的分隔符插入流中的元素

// Expected result in is list: [1, 0, 2, 0, 3]
List<Integer> is = Stream.of(1, 2, 3).intersperse(0).collect(toList());

这类似于intersperseHaskell和其他功能语言中的功能。

我已经看到了许多有关如何以类似方式连接字符串的示例,但没有找到任何针对常规列表的解决方案。


问题答案:

您可以使用flatMap来完成此操作,但是在最后一个元素之后会得到一个附加的分隔符:

List<Integer> is = IntStream.of(1, 2, 3)
                            .flatMap(i -> IntStream.of(i, 0))
                            .collect(toList());

这是没有尾随分隔符的另一种方式:

List<Integer> is = IntStream.of(1, 2, 3)
                            .flatMap(i -> IntStream.of(0, i))
                            .skip(1)
                            .collect(toList());

这次,我们在每个原始元素之前添加分隔符,并摆脱了前导的分隔符。



 类似资料:
  • 我有两组说: 我想得到一个集合,其中包括第一个集合的元素与第二个集合的每个元素连接,以及一个分隔符,即输出应该是: (这里.是我的分隔符) 我最初认为可以通过流式传输第一个集合并应用<code>收集器来实现这一点。在第二个元素上加入(),但这不能解决我的需要。

  • 问题内容: 我有一个应用程序,其中的分隔符插入设置为自定义值-Right ,Left 。这在中可以完美使用,但是在我看到的分隔符插入设置为右侧的默认值。即使在xib文件中将其设置为,它仍然无法正确显示。 如何删除分隔页边距? 问题答案: iOS 8.0在单元格和表视图上引入了layoutMargins属性。 此属性在iOS 7.0上不可用,因此您需要确保在分配前检查一下! 简单的解决方法是对单元格

  • 本文向大家介绍vue怎么改变插入模板的分隔符?相关面试题,主要包含被问及vue怎么改变插入模板的分隔符?时的应答技巧和注意事项,需要的朋友参考一下 https://cn.vuejs.org/v2/api/#delimiters

  • 如果使用带有单个参数的第一个StringToknenizer构造函数并编写示例程序,结果是和12个令牌。它返回没有任何空格的整个句子。我明白这是怎么回事。 如果使用带有两个参数的第二个构造函数,我的测试程序将得到每个单词有空格,但没有逗号,只有两个标记。我认为它应该同时将空格和逗号作为标记分隔符计算,但它将逗号之前的所有内容作为1标记计算,将逗号之后的所有内容作为1标记计算。这部分让我很困惑。 我

  • 问题内容: 假设我有一个数组: 而且我需要使用分隔符(例如)来连接其元素,因此结果应该是这样的字符串: 我该怎么办? PS: 是的,我知道这件事和这篇文章,但是它的解决方案不适用于一系列原语。 问题答案: 这是我想出的。有几种方法可以执行此操作,它们取决于您使用的工具。 使用和来自Common Lang : 您不能只使用它,因为它没有方法的重载版本。虽然,它有方法。 适用于1.2以上的任何Java

  • 我试图创建一个程序,该程序可以识别哪些分隔符缺少,并将它们插入文件中各自的位置。因此,例如,让我们假设我的如下所示: 我已经尝试打印,但根本不起作用,它只打印了数字116。 所以我的问题是:是否可以实际使用异常错误消息来修复,因为它显示缺少什么分隔符以及应该在什么位置,还是应该使用堆栈数据结构来跟踪所有可能的分隔符并插入缺少的分隔符?或者有没有更好的方法来做到这一点? 我在这里看到过其他问题,比如