Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 轻松地将列表中的值作为参数传递给方法_Java - Fatal编程技术网

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

Java 轻松地将列表中的值作为参数传递给方法,java,Java,有没有简单的方法可以将任意长度列表中的所有值作为参数传递给方法。例如,在下面的代码中,我希望method2中的params是驻留在params列表中的一系列值(但没有列表结构)。因为列表的长度是任意的,所以我不能只运行一个循环,将列表中的每个值赋给一个变量,然后将这些变量传递给method2 void method1( List<Double> params ){ void method2(params...) } void方法1(列出参数){ 无效方法2(参数…) }

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

void method1( List<Double> params ){
    void method2(params...)
}
void方法1(列出参数){
无效方法2(参数…)
}
谢谢~ryan

您可以申报

public void method2(Double... doubles) {
}
有关详细信息,请参见。

您可以声明

public void method2(Double... doubles) {
}
有关详细信息,请参见。

这样怎么样

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);
这样怎么样

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);

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

void method2(Double ... args)
在这种情况下,args将是双精度[]

在method1中需要做的是将列表转换为双精度[]

以下是一个示例:

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]);
    }
}
publicstaticvoidmain(字符串[]args){
列表=新的ArrayList();
列表。添加(1.0);
列表。添加(2.0);
列表。添加(3.0);
方法1(列表);
}
公共静态无效方法1(列表){
方法2(list.toArray(新的双[]{}));
}
公共静态无效方法2(双参数){
对于(int i=0;i

希望这有帮助

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

void method2(Double ... args)
在这种情况下,args将是双精度[]

在method1中需要做的是将列表转换为双精度[]

以下是一个示例:

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]);
    }
}
publicstaticvoidmain(字符串[]args){
列表=新的ArrayList();
列表。添加(1.0);
列表。添加(2.0);
列表。添加(3.0);
方法1(列表);
}
公共静态无效方法1(列表){
方法2(list.toArray(新的双[]{}));
}
公共静态无效方法2(双参数){
对于(int i=0;i

希望这有帮助

以列表形式传递参数有什么问题?以列表形式传递参数有什么问题?