如何在Java 8中将字符流转换为字符串

时间:2019-01-30 18:58:53

标签: java java-8 java-stream

如何在Java 8中将Stream<Character>转换为StringCollectors.joining()期望CharSequence因此出现编译错误。

2 个答案:

答案 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));