如何在JAVA中传递变量数组

时间:2016-09-28 14:14:44

标签: arrays java-8

我想询问 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);
        });
    }
}

5 个答案:

答案 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));
      }
   }