将集合传递给方法参数?

3
我们有一个方法:
public void foo (String s1, String s2, String s3) { 
    ...
}

这里涉及到IT技术,需要将集合传递给方法参数,可以使用哈希表(HashMap)或列表(List),都可以。

那么有没有一种方法可以“转换”集合为方法参数呢?类似于:

public void foo (getParamters(map)) { ... }

当然可以,我能够胜任

public void foo (map.get(0), map.get(1), map.get(3)) { ... }

但我在考虑更加自动化的方案,帮助我解决一个大问题。


1
创建一个重载方法,该方法以Collection作为参数,并使用提取的参数调用您的方法。 - Clashsoft
3个回答

5
您可以将集合转换为数组,然后将数组传递给方法:
public void foo (String... s) { 
    ...
}

...

String[] arr = map.keySet().toArray (new String[0]);
foo (arr);

由于您事先不知道集合中元素的数量,因此使用varargs声明方法比在foo (String s1, String s2, String s3)中使用固定数量的参数更有意义。


为了将其扩展到其他类型而不仅仅是String..您可以传递一个对象数组,并在方法内部进行instanceof检查,然后提取参数 :) - TheLostMind

1
你可以使用可变参数,例如:

You can use varargs for example:

public static void main(String[] args) {
    test("1", "2");
    test("1", "2", "3");

}

public static void test(String ...args){
    for (int i = 0; i < args.length; i++) {
        //do something
    }
}

0

您可以使用可变参数,它允许方法接受零个或多个参数。如果我们不知道在方法中需要传递多少个参数,那么可变参数是更好的方法。

语法:

return_type method_name(data_type... variableName){
  // code snippet
}

例子:

public void varargsMethod(String... values){          
    for(String s:values){  
       System.out.println(s);  
    }  
}

运行示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接