Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 for循环中的效率_Java - Fatal编程技术网

Java for循环中的效率

Java for循环中的效率,java,Java,如何优化以下代码段?我正在创建一个二维数组中填充的空间对象,作为一个棋盘,并使用它创建一个更标准的命名系统 String name = null; for(int r = 7; r > -1; r--) for(int c = 0; c < 8; c++) { if(c == 0) name = "A"; else if(c == 1)

如何优化以下代码段?我正在创建一个二维数组中填充的空间对象,作为一个棋盘,并使用它创建一个更标准的命名系统

String name = null;
    for(int r = 7; r > -1; r--)
        for(int c = 0; c < 8; c++)
        {
            if(c == 0)
                name = "A";
            else if(c == 1)
                name = "B";
            else if(c == 2)
                name = "C";
            else if(c == 3)
                name = "D";
            else if(c == 4)
                name = "E";
            else if(c == 5)
                name = "F";
            else if(c == 6)
                name = "G";
            else
                name = "H";
String name=null;
对于(int r=7;r>-1;r--)
对于(int c=0;c<8;c++)
{
如果(c==0)
name=“A”;
else如果(c==1)
name=“B”;
else如果(c==2)
name=“C”;
else如果(c==3)
name=“D”;
else如果(c==4)
name=“E”;
else如果(c==5)
name=“F”;
else如果(c==6)
name=“G”;
其他的
name=“H”;

您从未完成过循环的
,但这里有一种方法可以优化您迄今为止向我们展示的内容:

String name = null;
String letters = "ABCDEFGH";

for (int r=7; r >= 0; r--) {
    for (int c=0; c < 8; c++) {
        name = letters.charAt(c) + "";

        // the rest of your logic
    }
}
String name=null;
字符串字母=“ABCDEFGH”;
对于(int r=7;r>=0;r--){
对于(int c=0;c<8;c++){
名称=字母。字符(c)+”;
//你剩下的逻辑
}
}

您可以迭代字符并将其更改为如下字符串:

for (int r=7; r >= 0; r--) {
    for (char c='A'; c <= 'H'; c++) {
        name = c + "";
用于(int r=7;r>=0;r--){

对于(char c='A';c来说,“A”的ASCII码是65,“H”的ASCII码是72

for (int r = 7; r > -1; r--) {
    for(int c = 65; c < 73; c++) {
        name = Character.toString((char) c);
        //or
        name = "" + (char) c;
    }
}
用于(int r=7;r>-1;r--){
对于(int c=65;c<73;c++){
name=Character.toString((char)c);
//或
name=“”+(char)c;
}
}
最终静态字符[]字母={A',B',C',D',E',F',G',H'};
:

对于(int c=0;使用开关而不是it/else结构来优化可读性)您可以执行
'a'+c
,但它会导致
字符而不是
字符串
。我不知道
字符。toString('a'+c);
比加载字符串文字更快。您还可以执行
操作(char c='A';c顺便说一句:为了提出更好的问题,您可以提供一个工作代码段,以便其他用户可以执行和调试它。您还可以指定希望实现哪种优化:执行速度、可读性……您可以修改数据结构,以使用映射而不是数组。然后,您就有了查找timO(1)的es而不是O(n²)。不过,我想他也需要将列作为整数,因此也需要字符到int的转换。就我的口味而言,这比让两个循环都基于整数行/列数还不清楚。
final static char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
      :
for (int c=0; c<8; c++) {
    name = letters[c];
      :