我有Map <A, List<A>> map = new HashMap<A, List<A>>();
说我想通过增强的List<A>
循环打印for
中的每个元素
执行map.get(KeyOftypeA)
不返回可迭代列表...似乎它返回一个通用Object
我该怎么做才能找回我输入的好列表并使其可迭代?...
编辑:这是我正在尝试运行的代码的完整列表
import java.util.*;
public class StuffTag {
public static void main (String[]args){
String stuff;
List<String> tags = new ArrayList();
Map<String,List<String>> stuff_tags = new HashMap<String,List<String>>();
List<Map> list_stuff_tags = new ArrayList();
stuff="David and Goliath";
tags.add("fire");
tags.add("water");
tags.add("smoke");
tags.add("paper");
stuff_tags.put(stuff, tags);
list_stuff_tags.add(stuff_tags);
Map el =list_stuff_tags.get(0);
for(String x:el.get("David and Goliath"))
System.out.println(x);
}
}
答案 0 :(得分:1)
List<A> list = (List<A>)map.get(KeyOfTypeA);
无论如何似乎有些不对劲。如果在编译时正确指定了A类型,则不需要执行该转换。你是如何指定A类型的?
可能您没有指定类型。假设A是一个String类型,在代码中的某个位置你应该做类似的事情:
class yourClassStoringHashMap <A>{
Map <A, List<A>> map;
}
class whereYouInstantiate{
static void int main(){
yourClassStoringHashMap<String> instance = new yourClassStoringHashMap<String>();
//probably you are doing yourClassStoringHashMap instance = new yourClassStoringHashMap();
}
}
编译器应该在该行上发出警告。
编辑:
这是问题
List<String> tags = new ArrayList(); //should be new ArrayList<String>
答案 1 :(得分:1)
您需要定义Map el
的类型,例如Map<String,List<String>> el =list_stuff_tags.get(0);
这对你有用。