Java 在以下两种方法之间,哪种方法更好、更优化?

Java 在以下两种方法之间,哪种方法更好、更优化?,java,Java,下面是使用调用API方法反转字符串的两种方法。请说明哪种方法更好,并提供适当的理由 public String functionOne(String str){ char arr[] = str.toCharArray(); int limit = arr.length/2; for (int i = arr.length-1, j = 0; j < limit; i--, j++) { char c = arr[i]; arr[i]

下面是使用调用API方法反转字符串的两种方法。请说明哪种方法更好,并提供适当的理由

public String functionOne(String str){
    char arr[] = str.toCharArray();
    int limit = arr.length/2;
    for (int i = arr.length-1, j = 0; j < limit; i--, j++) {
        char c = arr[i];
        arr[i] = arr[j];
        arr[j] = c;
    }
    return new String(arr);
}

public String functionTwo(String str) {
    StringBuilder strBuilder = new StringBuilder();
    char[] strChars = str.toCharArray();

    for (int i = strChars.length - 1; i >= 0; i--) {
        strBuilder.append(strChars[i]);
    }

    return strBuilder.toString();
}
实际上,当我在长度为100000的字符串上运行代码时,第二种方法花费的时间是第一种方法的两倍。通过使用System.currentTimeMillis,我发现第一种方法的执行差异为1,第二种方法的执行差异为2。

这是怎么回事:

new StringBuilder("some string").reverse().toString();
为此已经准备好的API可能会使用最有效的方式。

这方面如何:

new StringBuilder("some string").reverse().toString();

为此已经准备好的API可能会使用最有效的方式。

两者都是相同的。第一种是使用n/2操作,该操作是开启的,第二种是在n操作中进行,该操作也具有开启时间复杂性

在实践中,这两种方法几乎都能很好地运行,因为n或n/2操作不会产生太大的差异


编辑:如果你没有得到时间复杂性的含义,试着生成一个大长度的随机字符串,比如一百万,然后计算两种方法的时间

两者都一样。第一种是使用n/2操作,该操作是开启的,第二种是在n操作中进行,该操作也具有开启时间复杂性

在实践中,这两种方法几乎都能很好地运行,因为n或n/2操作不会产生太大的差异


编辑:如果你没有得到时间复杂性的含义,试着生成一个大长度的随机字符串,比如一百万,然后计算两种方法的时间

Second更具可读性:我可以浏览一下,而不必考虑它在做什么。我每次都会这么做,除非你有充分的理由需要它快一点


第一个让我的大脑停止了几秒钟。这意味着它是危险的,很容易被未来的变化打破。它要么需要注释,要么替换为第二个注释。

第二个注释更具可读性:我可以浏览一下,而不必考虑它在做什么。我每次都会这么做,除非你有充分的理由需要它快一点


第一个让我的大脑停止了几秒钟。这意味着它是危险的,很容易被未来的变化打破。它要么需要注释,要么替换为第二种方法。

我对此不太确定,但我认为第一种方法更好=更快?更具可读性?您的符号不一致:char arr[]与char[]strChars。前者主要是为了缓解C++的过渡,而后者是更可读的IMO。改进为2:使用StrigBuudor或ARARYLIST等时总是预先分配内存:新的StrugBuffDist.Trimthi对此不太肯定,但我认为第一种方法是更好更快?更具可读性?您的符号不一致:char arr[]与char[]strChars。前者主要是为了减轻C++的转换,而后者是更可读的IMO。改进为2:在使用StrugBuudor或AARYLIST等时总是预先分配内存:新的StrugBuffDist.St.长度“对于每一个多项式时间算法,都有一个指数算法,我宁愿运行。”- Alan Perlis“对于你拥有的每一个多项式时间算法,我宁愿运行一个指数算法。”-艾伦·佩利斯