我想询问 JAVA
中是否可以进行以下操作。我认为代码是不言自明的,如果没有,请不要犹豫。
import java.util.List;
public class NewClass {
public static void main(String[] args){
int x = 0;
int y = 1;
int z = 2;
printer([x,y,z]); //if somehow this is possible in JAVA?
}
private void printer(List num){
num.stream().forEach((i) -> {
System.out.println(i);
});
}
}
答案 0 :(得分:3)
您想在此处使用VirtualProtect
:
print(); // empty list
print(1) // one entry
print(1, 2, n) // entries ...
换句话说:使用" ..."你可以绕过任意的#34;数组&#34 ;;并且编译器为您完成工作。因此,该方法可以像:
一样使用print(List)
您使用void print(List<Integer> numbers)
的想法是错误的做法 - 您在那里创建原始类型,这是您绝对想要避免的。
所以另一种选择是:
print(Arrays.asList(1,2,3));
用
调用{{1}}
答案 1 :(得分:2)
Ues Varagrs
,是的,但是没有确切的语法
Varagrs
会将您的所有传递输入作为单个数组收集。
要将数组与流一起使用,可以使用Arrays.stream
函数来获取数组流。
import java.util.List;
public class NewClass {
public static void main(String[] args){
int x = 0;
int y = 1;
int z = 2;
printer(x,y,z);
}
private void printer(int... num){
Arrays.stream(num).forEach(System.out::println);
// or Arrays.stream(num).forEach(i->System.out.println(i));
}
}
输出:
0
1
2
答案 2 :(得分:1)
var args是你的朋友
http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
private void printer(int ... numbers) - 这基本上是一个int数组
使用您的代码,您可以这样做 Stream.of(数字).foreach(i - &gt; System.out.println(i))
答案 3 :(得分:0)
怎么样?
printer(Arrays.asList(new int [] {x,y,z}));
答案 4 :(得分:0)
public static void main(String[] args) throws IOException {
List<Integer> intList =new ArrayList<Integer>();
int x = 0;
int y = 1;
int z = 2;
intList.add(x);
intList.add(y);
intList.add(z);
printer(intList);
}
private static void printer(List<Integer> intList) {
for(int count=0;count<intList.size();count++)
System.out.println(""+intList.get(count));
}
}