如何将字符串转换为Java 8字符流?

2022-09-01 08:42:34

我发现这个问题是关于从java字符串中获取java.util.streams.IntStream的,但是由于我正在使用Java 8,因此我还没有找到此方法。

更正:正如你们所指出的,我使用的是Java 7。现在方法就在那里。但这个问题仍然适用:chars()

如何从字符串中获取 a?Stream<Character>


答案 1

我本来想向你指出我之前关于这个主题的答案,但事实证明你已经链接到了这个问题另一个答案也提供了有用的信息。

如果需要值,可以使用返回的 by 并将值强制转换为,而不会丢失信息。其他答案解释了为什么该类没有原始的特化。charIntStreamString.chars()intcharCharStreamStream

如果确实需要盒装对象,请使用 从 转换为引用类型流。在 中,将值转换为 。由于对象应在此处作为返回值,因此 将自动装箱到 .这将导致 .例如CharactermapToObj()IntStreammapToObj()intcharcharCharacterStream<Character>

Stream<Character> sch = "abc".chars().mapToObj(i -> (char)i);
sch.forEach(ch -> System.out.printf("%c %s%n", ch, ch.getClass().getName()));

a java.lang.Character
b java.lang.Character
c java.lang.Character

答案 2

请确保您使用的是 JDK 8。此方法位于 CharSequence 接口中,由 String 实现。

此代码段工作正常:

import java.util.stream.IntStream;

public class CharsSample {

    public static void main(String[] args) {
        String s =  "123";
        IntStream chars = s.chars();
    }
}

推荐