使用“args”,但方法仍然没有采取多个数组作为参数?

问题描述:

我想要一个方法,需要x的数量ArrayList<>作为参数。当我使用参数时,这不起作用。参数只保留给int和String等吗?为什么参数不成为包含我的数组列表的新数组?我认为有一种方法可以将多个参数值赋给一个方法,该方法会变成方法内部的数组?使用“args”,但方法仍然没有采取多个数组作为参数?

ArrayList<String> list1 = new ArraytList(); 
list1.add("1"); 
ArrayList<String> list2 = new ArrayList(); 
list2.add("2"); 
list2.add("3"); 

的打印方法:

public void print(ArrayList<String> args){ 
    for(int i = 0; i < args.length; i++){ 
     for(int j = 0; j < args[i].size(); j ++){ 
      System.out.println(args[i].get(j)); 
     } 
    } 
} 

不工作

+5

那是因为你想传递两个的ArrayList到您的方法时,将只接受一个。 –

+1

是的,你的printElements只有一个参数,但你传递了两个参数。 – steve

+0

此外,我假设您使用lambda表达式使您的代码更短,更简洁?在这种情况下,你可以减少你的lambda表达式到这个-----> args.forEach(System.out :: println); –

printElements需要ArrayList<String>类型的单个参数,但你想给它ArrayList类型的两个参数。

+0

如果我会执行'printElements(String args)',那将需要多个String作为参数 - 而args是一个数组。我想有一个参数在x数量的数组中,并将它们变成一个嵌套数组(参数) - 就像同样的方式。 – Lealo

+0

@Lealo no。这将需要一个数组作为参数。如果你想采取任意数量的'ArrayList ''参数,那么设置年龄类型为'ArrayList ...'或者ArrayList >' – Alexander

+0

'ArrayList ... args'就是我正在寻找的东西对于! – Lealo

使用

first.addAll(second); 
printElements(first); 
+1

'addAll'返回一个'boolean',而不是一个新的列表。 –

+0

对不起我的坏。更新它。感谢@JoeC的纠正 – stinepike