在Java中返回可迭代列表

时间:2011-05-15 01:08:43

标签: java data-structures map hashmap

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

    }

}

2 个答案:

答案 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); 这对你有用。