2014-10-12 74 views
14

我发现this question有关从Java字符串得到一个java.util.streams.IntStream但我还没有发现这个方法现在,我使用的Java 8如何将字符串转换为Java 8字符流?

更正:正如你们指出,我是使用Java 7.现在方法chars()在那里。但问题仍然适用:

如何从字符串中获得Stream<Character>

回答

31

我要你点my earlier answer这个话题,但事实证明,你已经链接到that questionother answer也提供了有用的信息。

如果你想char值,可以通过String.chars()使用IntStream返回,并投了intchar而不会丢失信息。其他答案解释了为什么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 
2

请确保您使用的是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(); 
    } 
} 
+1

chars()方法在基类CharSequence!中。 – isnot2bad 2014-10-12 01:39:23

+0

是的,我得到使用Java 7 gradle,但我怎么能从字符串得到流? – ElderMael 2014-10-12 01:43:46

+0

@ElderMael你使用Java 7还是Java 8?这些方法和类型对于Java 8来说是新的。 – 2014-10-12 01:48:20

相关问题