字符串的字符串IntStream - Java

时间:2015-10-28 22:05:32

标签: java lambda java-8 java-stream

是否可以将字符串str.chars()转换为带有字符串的流,其中每个字符串包含5个字符,例如?

3 个答案:

答案 0 :(得分:4)

您可以使用

简单地将字符串拆分为五个字符大小的字符串
String[] split = string.split("(?<=\\G.{5})");

如果必须使用流,您可以使用,例如

Pattern.compile("(?<=\\G.{5})").splitAsStream(string).forEach(System.out::println);

答案 1 :(得分:3)

我不认为在不使用某些第三方库的情况下尝试组合字符中的元素非常适合Java流。

如果你想要一个包含5个字符子串的流,我会将它们拆分成这样:

String s = "1234567890123456789012345678901234567890";
IntStream.range(0, s.length()/5)
        .mapToObj(i -> s.substring(i*5, (i+1)*5))
        .forEach(System.out::println);

答案 2 :(得分:1)

是的,如果使用有状态的lambda表达式,可能会被认为是不良做法

应该能够以串行或并行方式处理流。元素处理的顺序会有所不同,但两者都应该导致相同的结果,这只能用于无状态表达式。