如何在Java 8中将Stream<Character>
转换为String
? Collectors.joining()
期望CharSequence
因此出现编译错误。
答案 0 :(得分:3)
请参阅@jubobs解决方案链接。也就是说,您可以根据自己的情况这样做:
Stream<Character> testStream = Stream.of('a', 'b', 'c');
String result = testStream.collect(Collector.of(
StringBuilder::new,
StringBuilder::append,
StringBuilder::append,
StringBuilder::toString));
执行起来比较好,然后map/cast
先将每个字符依次放在String
,然后再joining
,因为StringBuilder#append(char c)
会切断该中间步骤。
答案 1 :(得分:1)
将Character
转换为String
Stream<Character> st = Stream.of('C','h','t');
String result = st.map(c->c.toString()).collect(Collectors.joining());
System.out.println(result); //Cht
或使用方法参考
st.map(Object::toString).collect(Collectors.joining())
Collectors.joining
内部使用StringBuilder
here
或仅使用forEach
StringBuilder builder = new StringBuilder();
Stream<Character> st = Stream.of('C','h','t');
st.forEach(ch->builder.append(ch));