gpt4 book ai didi

java - 如何在 java 中创建我们自己的 O(1) 子字符串函数,就像在 jdk 6 中一样。

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:38:12 25 4
gpt4 key购买 nike

如何在 java 中创建我们自己的 O(1) 子字符串函数,就像在 jdk 6 中一样。是否有任何方法可以在 jdk 的高级版本上使用 jdk 6 的 substring()?

最佳答案

O(1) substring 是因为字符串的底层字符数组可以在对象之间共享。因此 substring 只需要创建一个对象,该对象带有指向原始字符串的指针以及偏移量和长度。没有实际数据本身的复制,这产生了烦人的效果,即从一个巨大的字符串中取出一个小子串,然后删除这个巨大的子串,实际上并没有释放内存。这导致代码如下:

String newstr = new String(oldStr.substring(5,9));

而不是看起来更明智:

String newstr = oldStr.substring(5,9);

因为字符串不再共享数据(我认为 Java 7 的更新 6 是发生这种情况的地方),所以这是不可能的,如果你想恢复 O(1) 性能,你基本上必须构建你的 < em>拥有字符串类来完成它。

请注意,您可能正在担心一些不太重要的事情。除非您的字符串非常很大,否则为它们复制数据的额外成本(空间和时间)可能无关紧要。

并且为每个需要后者的函数将 O1String 转换为 String 所付出的额外努力,以及与文字字符串的不太完美的集成,可能会使情况更糟。

关于java - 如何在 java 中创建我们自己的 O(1) 子字符串函数,就像在 jdk 6 中一样。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933227/

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