如何将字符串转换为Java 8字符流?
我发现这个问题是从java String中获取java.util.streams.IntStream但是我现在还没有找到这个方法,因为我使用的是Java 8。
更正:正如你们指出的那样,我使用的是Java 7.现在方法chars()
就在那里。 但问题仍然适用:
如何从字符串中获取Stream
?
我将指出你之前关于这个主题的回答 ,但事实certificate你已经链接到了这个问题 。 另一个答案也提供了有用的信息。
如果需要char
值,可以使用String.chars()
返回的IntStream
,并将int
值转换为char
而不会丢失信息。 其他答案解释了为什么Stream
类没有CharStream
原始特化。
如果你真的想要盒装的Character
对象,那么使用mapToObj()
从IntStream
转换为引用类型的流。 在mapToObj()
,将int
值转换为char
。 由于对象在此处被期望作为返回值,因此char
将被自动装箱为Character
。 这导致Stream
。 例如,
Stream 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
请确保您使用的是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(); } }