gpt4 book ai didi

Java:通过使用自定义类避免 StringBuilder.toString() 创建新的 String

转载 作者:行者123 更新时间:2023-11-30 09:12:56 25 4
gpt4 key购买 nike

在 Android 游戏中,我有一个运行大约 1500 万次的循环,我在其中排列单词 fragment 并对照字典检查结果。我注意到很多 GC 调用,我的主要怀疑是 StringBuilder .toString() 总是创建一个新的字符串。

我在 Java 方面的经验不多,不知道如何避免这种分配并以某种方式将内部 char 数组直接传递给 contains() 而无需任何分配或复制。

描述我的问题的简化伪代码 fragment :

static HashSet<String>dictionary;       // loaded from text file
String[7] wordParts = new String[7]; // pre-filled from player data
StringBuilder sb = new StringBuilder(20);

for (i=15 million times) {
sb.setLength(0);
for (j=2-7 times) {
sb.append(wordParts[j]);
}
if (dictionary.contains(sb.toString()) {
processValidWord();
}
}

最佳答案

据我所知,在 Java7 中,他们更改了 String 类的内部实现,删除了在不同字符串之间共享的 char[](偏移值指示该字符串中的第一个字符和该字符串的长度).

点这里 http://java-performance.info/changes-to-string-java-1-7-0_06/

关于Java:通过使用自定义类避免 StringBuilder.toString() 创建新的 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280925/

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