Java传递映射到一对vararg

Java传递映射到一对vararg,java,dictionary,variadic-functions,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 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);
        }
    }
}
公共类TestVarArgs{
公共静态void main(字符串[]args){
int[]数组=新的int[4];
for(int i=0;i
现在我怎样才能用地图做到这一点

我想传递一个映射到一个方法,该方法接收成对的varargs


将映射传递给Entry.Map的varargs不起作用。

Java varargs等同于数组,编译器支持在调用方法时在幕后生成数组

如果你的方法是

void myMethod(Map.Entry<String,String>>... args)
void myMethod(Map.Entry>…args)
这和

void myMethod(Map.Entry<String,String>>[] args)
void myMethod(Map.Entry>[]参数)
因此,您可以通过插入对数组的转换来调用它,如下所示:

Map<String,String> myMap = ...
...
myMethod((Entry<String,String>[])myMap.entrySet().toArray(new Map.Entry[myMap.size()]));
Map myMap=。。。
...
myMethod((条目[])myMap.entrySet().toArray(新的Map.Entry[myMap.size()]);

不能将
集合
传递给varargs参数。
我认为最简单的方法是从密钥集创建一个密钥数组

Map<K, V> aMap ;
Set<K> keySet = aMap.keySet();
K[] keyArray = keySet.toArray(new K[keySet.size()]);

aMethodWithVarargs(keyArray);

不起作用
是一个非常宽泛的术语。你能不能把你试过的东西贴出来,确切的意外行为是什么。
Map<K, V> aMap ;
Set<Entry.Map<K, V>> entrySet = aMap.entrySet();
Entry.Map<K, V>[] entryArray = keySet.toArray(new Entry.Map<K, V>[keySet.size()]);

aMethodWithVarargs(entryArray);