【发布时间】:2012-12-27 23:55:27
【问题描述】:
String.toCharArray() 在 java 中的运行时间是多少?源代码是
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
System.arrayCopy 是吗?运行时间为 O(n)?源代码并没有真正说明它是如何实现的。它是否遍历每个元素并复制它?谢谢。
【问题讨论】:
-
我很确定运行时间是 O(n) 再好不过了(必须复制字符)。问题是什么因素。
-
@irrelephant 所以可能是 O(1)?因为它不是遍历循环而是复制内存块?
-
不是真的 - 我认为它仍然是 O(N) 但常数因子较低,正如@MrSmith42 所说。有时它可能具有更高的常数因子 - 请参阅 stackoverflow.com/a/2589962/485971
-
@cinnamontoast:即使该方法是复制blocks的内存,也不能是
O(1)。我想说,运行时仍然是O(N),其中N是块数。尽管这是一种更快的方法,但您仍然需要复制所有块。
标签: java string copy runtime system