如何在Java中复制ArrayList?

时间:2018-09-25 11:08:37

标签: java arraylist

ArrayList<String> x = new ArrayList<String>(); 
for(int i = 0; i < x.size(); i++)
{
    ArrayList<String> x.get(i) = new  ArrayList<String>();
}

两个ArrayList都应全局声明

x ArrayList的值为:服务器,buser,paer cook,runner等。

第一个ArrayList值应该是第二个ArrayList名称(变量)

3 个答案:

答案 0 :(得分:4)

不可能在Java中动态设置变量名。如果您仍然想对字符串数组进行一些说明,则可以创建一个Map。 即

ArrayList<String> x = new  ArrayList<String>(); 
Map<String, ArrayList<String>> vars = new HashMap()<>;
for(int i = 0; i<x.size(); i++)
{
    vars.put(x.get(i),new  ArrayList<String>());
}

...

vars.get("server").add("Some Server info");

答案 1 :(得分:1)

第一个typeof x不是ArrayList<String>,它是ArrayList<ArrayList>,因为x的元素是ArrayList

第二,您不能将ArrayList的元素设置为ArrayList.get,而应使用ArrayList.set

ArrayList<ArrayList> x = new ArrayList<>();

//todo something with size of `x` (if not x.size() = 0)
for (int i = 0; i < x.size(); i++) {
    x.set(i, new ArrayList<String>());
}

答案 2 :(得分:1)

尝试这样, 您不能动态创建变量名。

public static void main(String[] args) {
        List<String> x = new ArrayList<>(Arrays.asList("server", "buser", "paer cook", "runner"));
        Map<String, ArrayList<String>> map = new HashMap<>();

//       if java version is 8
        x.forEach(eachElem -> {
            map.put(eachElem, new ArrayList<>());
        });

//      if java version is < 8
//      for(String eachElement : x ){
//          map.put(eachElement, new ArrayList<>());
//      }
    }