簡體   English   中英

如何將字符串轉換為 Java 8 字符流?

[英]How to convert a String to a Java 8 Stream of Characters?

我發現了這個關於從 java String 獲取 java.util.streams.IntStream 的問題,但我現在使用的是 Java 8 還沒有找到這個方法。

更正:正如你們所指出的,我使用的是 Java 7。現在方法chars()就在那里。 但問題仍然適用:

如何從字符串中獲取Stream<Character>

我打算向您指出我之前關於此主題的回答,但事實證明您已經鏈接到該問題 另一個答案也提供了有用的信息。

如果需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM