【问题标题】:efficient way to do nested for loop and add to list执行嵌套 for 循环并添加到列表的有效方法
【发布时间】:2021-04-29 08:20:53
【问题描述】:

下面我已经编写了一些可以工作并打印正确结果的代码,但是有没有更有效的方法来使用嵌套的 for 循环,而不是使用 5 个不同的 for 循环?

String A = "";
String B = "";
String C  = "";
String D  = "";
String E  = "";

ArrayList<String> id = new ArrayList<String>();

int row = 5;
for (int i=0; i < row; i++) {
    A = "id0"+i;
    id.add(A);
}
for (int i=0; i < row; i++) {
    B = "id1"+i;
    id.add(B);
}
for (int i=0; i < row; i++) {
    C = "id2"+i;
    id.add(C);
}
for (int i=0; i < row; i++) {
    D = "id3"+i;
    id.add(D);
}
for (int i=0; i < row; i++) {
    E = "id4"+i;
    id.add(E);
}
return id;

结果 [id00, id01, id02, id03, id04, id10, id11, id12, id13, id14, id20, id21, id22, id23, id24, id30, id31, id32, id33, id34, id40, id41, id42, id43, id44]

【问题讨论】:

  • 您正在创建的 5 个循环是固定的还是动态的
  • 有没有更有效的方法来使用嵌套的 for 循环,而不是使用 5 个不同的 for 循环? - 是的。

标签: java for-loop while-loop


【解决方案1】:

以下内容应该使用嵌套循环产生相同的输出

ArrayList<String> id = new ArrayList<>();
int row = 5;
for (int i = 0; i < row; i++) {
    for (int j = 0; j < row; j++) {
        id.add("id" + i + j);
    }
}
return id;

【讨论】:

    【解决方案2】:

    考虑以下几点:

    ArrayList<String> id = new ArrayList<String>();
    int row=5;
    for (int i=0; i < 5; i++) {
        for (int j=0; j < row; j++) {
            String temp = "id" + i + j;
            id.add(temp);
        }
    }
    

    这将代码简化为 2 个嵌套的 for 循环,使用单个字符串变量而不是 5 个。这也不应该改变解决方案的时间复杂度,因为外部循环是恒定的。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多