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