有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java字符串数组的操作

我有这样的情况

String[] ids = new String[depts.size()];
for (int i=0; i<ids.length; i++)
{
  ids [i] = ("Dept" + .... )
}

因此,循环会查看长度设置为depts的ID。大小但是我需要在ids[I]中添加另一个字符串项,比如“Region”+reg_num。比如ids[I]中的下一个项必须是“Region”+reg_num,这对每个部门都是重复的
既然它是由长度控制的,我该怎么做呢?如何调整循环以获得额外的一项。如有任何建议,将不胜感激

谢谢


共 (4) 个答案

  1. # 1 楼答案

    如果您试图为每个id存储一个部门,那么最好定义如下自定义类:

    public class Region {
        String id;
        String dept;
        public Region(String id, String dept) {
            this.id=id;
            this.dept=dept;
        }
        // getters for id and dept
    }
    
    then define your region array like this
    
    Region[] regions = new Region[depts.size()];
    for (int i=0; i<regions.length; i++) {
      regions[i] = new Region("Dept"+i, "Region"+i);
    }
    
  2. # 2 楼答案

    如果事先知道,则相应地初始化数组,并添加以下元素:

       String[] ids = new String[depts.size()+1];//added one in the length
       for (int i=0; i<ids.length; i++)
       {
         ids [i] = ("Dept" + .... )
       }
       ids[ids.length-1] = "Region"+....; 
    

    或者

       String[] ids = new String[2*depts.size()];//added one in the length
       for (int i=0; i<ids.length; i=i+2)
       {
         ids [i] = ("Dept" + .... )
         ids[i+1] = "Region"+....; 
       }
    
  3. # 3 楼答案

    只需使用List而不是数组。与阵列不同,列表可以动态调整大小:

    final List<String> newList = new ArrayList<>(oldList);
    newList.add(newElement);
    

    编辑如果仍在使用Java 6,则必须:

    final List<String> newList = new ArrayList<String>(oldList);
    

    相反

    编辑2根据您的用例,您甚至可能不需要第二个列表;由于列表可以动态调整大小,除非您绝对需要复制它,否则只需保留相同的列表:

    // first call
    list.add(something);
    // second call
    list.add(somethingElse);
    // etc etc
    

    然而,如果看不到更多的代码,就很难说了

  4. # 4 楼答案

    如果我正确理解您的请求,您可以这样做(但请记住,您可以保存字符串列表而不是数组,以便动态更改它):

    String[] ids = new String[depts.size()*2];
    for (int i=0; i<ids.length; i+=2)
    {
      // depts index would be i/2
      ids [i] = ("Dept" + .... )
      ids[i+1] = "Region"; // + ...
    }