我發現this question有關從Java字符串得到一個java.util.streams.IntStream但我還沒有發現這個方法現在,我使用的Java 8如何將字符串轉換爲Java 8字符流?
更正:正如你們指出,我是使用Java 7.現在方法chars()
在那裏。但問題仍然適用:
如何從字符串中獲得Stream<Character>
?
我發現this question有關從Java字符串得到一個java.util.streams.IntStream但我還沒有發現這個方法現在,我使用的Java 8如何將字符串轉換爲Java 8字符流?
更正:正如你們指出,我是使用Java 7.現在方法chars()
在那裏。但問題仍然適用:
如何從字符串中獲得Stream<Character>
?
我要你點my earlier answer這個話題,但事實證明,你已經鏈接到that question。 other answer也提供了有用的信息。
如果你想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();
}
}
chars()方法在基類CharSequence!中。 – isnot2bad 2014-10-12 01:39:23
是的,我得到使用Java 7 gradle,但我怎麼能從字符串得到流? –
ElderMael
2014-10-12 01:43:46
@ElderMael你使用Java 7還是Java 8?這些方法和類型對於Java 8來說是新的。 – 2014-10-12 01:48:20