繁体   English   中英

Java将Map传递给varargs对

[英]Java pass Map to pair of varargs

使用普通数组执行以下操作:

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

现在我该如何使用地图?

我想将映射传递给接收成对的变量的方法。

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

Java varargs等效于数组,并具有编译器支持,可在调用该方法时使数组在幕后。

如果您的方法需要,例如,

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

它与

void myMethod(Map.Entry<String,String>>[] args)

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

Map<String,String> myMap = ...
...
myMethod((Entry<String,String>[])myMap.entrySet().toArray(new Map.Entry[myMap.size()]));

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

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

aMethodWithVarargs(keyArray);

当然,您可以使用Entry.Map设置

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM