使用普通数组执行此类操作:
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);
}
}
}
现在我如何使用地图做到这一点?
我想将地图传递给接收对的varargs的方法。
将Map传递给Entry.Map的varargs不起作用。
答案 0 :(得分:4)
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()]));
答案 1 :(得分:0)
您无法将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);