如何将字符串转换为Java 8字符流?
问题描述:
我发现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