gpt4 book ai didi

java - 初始化 StringBuilder 以使用 UTF-16 编码器

转载 作者:搜寻专家 更新时间:2023-11-01 02:18:59 24 4
gpt4 key购买 nike

考虑 Java 11 中的以下代码:

StringBuilder sb = new StringBuilder("one");
sb.append("δύο"); // "two"

第一行创建一个 StringBuilder,它使用 Latin1 编码器(每个字符一个字节)。然后第二行使 StringBuilder 意识到它需要改用 UTF16 编码器,因此它在附加新的 UTF-16 字符之前将其当前内容复制到一个新数组中。

StringBuilder 类有一个构造函数重载,它接受一个初始容量参数,如果您已经知道要构建的字符串的所需大小,它旨在避免重新分配。但是,如果您以英文字符串开头,然后附加一个外国字符串,那么这个特定的构造函数重载就没有用了,因为它仍然会重新分配字节数组。

有没有办法创建一个从一开始就使用 UTF16 的 StringBuilder 实例?

最佳答案

StringBuilder 的 Java 11 或 Java 12 版本中没有任何内容可以执行此操作。

真正的问题是,您可能从中获得的性能提升对您有多重要。 分析您的应用程序,以了解这种不需要的重新分配是否对您的应用程序的整体性能有显着影响。

如果要产生显着差异,您可以实现自己的版本 StringBuilder(扩展相同的接口(interface)以实现兼容性)。

或者,如果您准备等待,您可以下载 OpenJDK 源代码并开发/构建/测试 StringBuilder 的扩展...并将其作为补丁提交以供考虑。 (如果您包含了显示出明显性能优势的基准,那将有助于增加包含的机会。)

关于java - 初始化 StringBuilder 以使用 UTF-16 编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56376298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com