Java 8 Streams: IntStream to String
2022-09-01 05:08:17
在 Java 8 流 API 中,调用任何对象都会返回包含所有字符的对象。chars()
String
IntStream
将返回的对象转换回的正确方法是什么?调用会给我一个 ,它不被任何构造函数接受。IntStream
String
toArray()
int[]
String
在 Java 8 流 API 中,调用任何对象都会返回包含所有字符的对象。chars()
String
IntStream
将返回的对象转换回的正确方法是什么?调用会给我一个 ,它不被任何构造函数接受。IntStream
String
toArray()
int[]
String
使用 的方法也可以解决问题,StringBuilder
appendCodePoint
IntStream in = "Convert me to a String".codePoints();
String intStreamToString = in.collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(intStreamToString);
您可以使用 ,然后使用 String(int[], int, int)
构造函数。这并不完全令人满意,因为指定返回UTF-16代码单元,基本上:toArray()
chars()
返回一个 int 零流,从此序列中扩展 char 值。任何映射到代理代码点的字符都将在未解释的情况下传递。
相反,使用 codePoints()
将更符合此构造函数,该构造函数需要代码点而不是 UTF-16 代码单元。否则(with ),如果您的原始字符串确实包含代理项对,您可能会发现您收到错误 - 我还没有尝试过,但它是有道理的。chars
我不知道在不首先转换为数组的情况下执行此操作的简单方法。