[英]How to convert a String to a Java 8 Stream of Characters?
我打算向您指出我之前关于此主题的回答,但事实证明您已经链接到该问题。 另一个答案也提供了有用的信息。
如果需要char
值,可以使用String.chars()
返回的IntStream
并将int
值转换为char
而不丢失信息。 其他答案解释了为什么Stream
类没有CharStream
原始专业化。
如果你真的想要装箱的Character
对象,那么使用mapToObj()
将IntStream
转换为引用类型的流。 在mapToObj()
,将int
值转换为char
。 由于这里期望对象作为返回值,因此char
将被自动装箱为Character
。 这导致Stream<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
请确保您使用的是 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();
}
}
我迟到了使用Pattern
方法的另一种方法: splitAsStream()
String test = "Lobgasex loga nepe co so x";
List<Character> chars = Pattern.compile("").splitAsStream(test)
.map(i -> i.charAt(0))
.collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.