gpt4 book ai didi

java - String.length() 和 string.toCharArray().length 的速度/效率权衡

转载 作者:行者123 更新时间:2023-12-02 06:08:21 25 4
gpt4 key购买 nike

我有一个接受String参数的方法。我需要将 String 转换为 char[] 进行处理。但是,如果我的字符串大于一定长度,我可以停止处理我的方法逻辑。

public void doSomething(String str) {
char[] strArray = str.toCharArray();
// do something
}

我知道就空间效率而言,我应该在创建 char[] 之前检查 str.length()。然而,这引起了我的思考。就时间复杂度而言,假设我仍然需要 char[] ,哪个效率更高?

假设我已经有两个对象 Stringchar[],哪个更快/更高效?

  1. str.length()

  2. strArray.length

最佳答案

由于您已经拥有这两个对象,因此时间复杂度是相同的:都是 O(1),因为 java.lang.String 和 Java 数组都存储其长度以便直接检索。

但是,您可以使用 getChars method 来改进方法的计时。字符串以避免将字符复制到所需子字符串的末尾:

int maxLength = 100;
int effectiveLength = Math.min(maxLength, str.length());
char[] strArray = new char[effectiveLength];
str.getChars(0, effectiveLength, strArray, 0);

如果您的算法在到达字符串末尾之前可以停止处理,则此方法可以让您避免分配额外的内存并将字符复制到其中。

关于java - String.length() 和 string.toCharArray().length 的速度/效率权衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667710/

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