轻松将列表中的值作为参数传递给方法

时间:2012-07-31 23:10:29

标签: java

是否有任何简单的方法可以将任意长度List中的所有值作为参数传递给方法。例如,在下面的代码中,我希望method2中的params是驻留在params列表中的值的序列(但没有List结构)。因为列表具有任意长度,所以我不能只运行循环并将列表中的每个值分配给变量,然后将这些变量传递给method2。

void method1( List<Double> params ){
    void method2(params...)
}

谢谢! 〜瑞恩

3 个答案:

答案 0 :(得分:3)

您可以声明

public void method2(Double... doubles) {
}

有关详细信息,请参阅Java varargs documentation

答案 1 :(得分:1)

要使方法2能够接收可变数量的参数,您需要以这种方式声明它:

void method2(Double ... args)

在这种情况下,args将是Double []。

您需要在method1中执行的操作是将List转换为Double []。

以下是一个示例:

public static void main(String[] args) {

    List<Double> list = new ArrayList<Double>();

    list.add(1.0);
    list.add(2.0);
    list.add(3.0);

    method1(list);
}

public static void method1(List<Double> list) {
    method2(list.toArray(new Double[] {}));
}

public static void method2(Double... args) {

    for (int i = 0; i < args.length; i++) {
        System.out.println(args[i]);
    }
}

希望这有帮助!

答案 2 :(得分:0)

这样怎么样?

void method1(Double... params ){
    method2(Arrays.asList(params));
}

这将允许您执行

之类的操作
method1(1.0);
method1(1.0, 2.0);
method1(1.0, 2.0, 3.0);
method1(1.0, 2.0, 3.0, 4.0);