Java 将 Map 传递给一对可变参数

use*_*133 2 java dictionary variadic-functions

用普通数组做这样的事情:

public class TestVarArgs {
    public static void main(String[] args) {
        int[] array = new int[4];
        for (int i = 0; i < array.length; i++) {
            System.out.println(i);
        }
        testThis(array);
    }
    public static void testThis(int... args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我怎样才能用地图做到这一点?

我想将映射传递给接收可变参数对的方法。

将 Map 传递给 Entry.Map 的可变参数不起作用。

das*_*ght 5

Java varargs 相当于数组,编译器支持在调用方法时在幕后创建数组。

如果你的方法需要,说,

void myMethod(Map.Entry<String,String>>... args)
Run Code Online (Sandbox Code Playgroud)

它与

void myMethod(Map.Entry<String,String>>[] args)
Run Code Online (Sandbox Code Playgroud)

所以你可以通过插入到数组的转换来调用它,如下所示:

Map<String,String> myMap = ...
...
myMethod((Entry<String,String>[])myMap.entrySet().toArray(new Map.Entry[myMap.size()]));
Run Code Online (Sandbox Code Playgroud)