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名称(变量)
答案 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<>());
// }
}