[英]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.