Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 垂直打印字符串!在时间和复杂性方面,哪种方法是最好的?_Java_String - Fatal编程技术网

Java 垂直打印字符串!在时间和复杂性方面,哪种方法是最好的?

Java 垂直打印字符串!在时间和复杂性方面,哪种方法是最好的?,java,string,Java,String,我正在写3种方法,可以将输入字符串垂直打印一行。但我不知道最好的方法是什么,因为使用System.nano进行基准测试时,时间会有很大的变化,我的意思是,如果我计算流程开始和结束之间的时间差。 请建议哪一个最好或更好,根据你的知识发表你的看法 代码片段1 /** * Prints all the characters in the argument string vertically using loop * @param str */ public static void toVertS

我正在写3种方法,可以将输入字符串垂直打印一行。但我不知道最好的方法是什么,因为使用System.nano进行基准测试时,时间会有很大的变化,我的意思是,如果我计算流程开始和结束之间的时间差。 请建议哪一个最好或更好,根据你的知识发表你的看法

代码片段1

/**
 * Prints all the characters in the argument string vertically using loop
 * @param str
 */
public static void toVertStringLoop(String str){

    if(str != null && !"".equals(str)){
        int strLen = str.length();

        for (int i=0; i<strLen; i++){
            System.out.println(str.charAt(i));
        }

    }

}
代码片段3

/**
 * Prints all the characters in the argument string vertically using for-each loop
 * @param str
 */
public static void toVerticalStringIterator(String str){

    //for-each loop needs array or Iterator instance
    for(char ch : str.toCharArray()){
        System.out.println(ch);
    }

}
代码段3更好。因为代码段2包含递归方法调用,其中JVM必须维护一个堆栈,该堆栈会降低性能并增加JVM的额外开销,而代码段1的效果与代码段3相同,但性能略有下降,因为每个循环读取:

您已经获得了所有代码。测试它并告诉我们!!我猜第一个很可能会排在第一位。您也可以尝试对其进行缓冲,只进行一次System.out调用。在比较其他方法的处理时间时,使用递归是处理单个数据的最佳方法。这个问题更适合System.out.println,它将占用最多的时间。为了更好地进行基准测试,请使用StringBuilder并将其内容输出一次。sidenote:if str!=null&&!。equalstr可以写得更短,就好像!。equalsstr,因为equals检查空值。
/**
 * Prints all the characters in the argument string vertically using for-each loop
 * @param str
 */
public static void toVerticalStringIterator(String str){

    //for-each loop needs array or Iterator instance
    for(char ch : str.toCharArray()){
        System.out.println(ch);
    }

}