大家好!最近在学习 泛型时遇到一个疑问,请教大家。
写了一个测试类:package cn.softspeed.generic;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;public class GenericTest {
private Map<String,List<String>> map = new HashMap<String,List<String>>();

public GenericTest()
{
List list1 = new ArrayList();
list1.add("");
list1.add("zhujun");

List list2 = new ArrayList();
list2.add("jones");
list2.add("hello");

map.put("map1", list1);
map.put("map2", list2);
}

public void itearteMap()
{
for(String names:map.keySet())
{
System.out.println(names);
for(Iterator itList = ((List<String>)map.get(names)).iterator(); itList.hasNext();)
{
System.out.println((String)itList.next());
}

/*for(List<String> itLists: map.get(names))
        {}*/


}

}
public static void main(String[] args) {
new GenericTest().itearteMap();
}}在遍历Map中的List<String>对象时,使用for迭代是没问题的。
for(Iterator itList = ((List<String>)map.get(names)).iterator(); itList.hasNext();)但是,想使用:for(List<String> itLists: map.get(names)) 这种方式进行遍历List<String>对象时,出现错误信息如下:
Type mismatch: cannot convert from element type String to 
 List<String>
请教大家如果想用for ..each 这种方式来遍历map的值对象List<String>,该怎么做呢???

解决方案 »

  1.   

    for(List <String> itLists: map.values())
      

  2.   

    map.get(names)得到的是字符串类型的List,所以可以用这样迭代出每个List中的字符串。
    for(String names:map.keySet()) 

        for(String itLists:map.get(names)){
           System.out.println(itLists);
           System.out.println(" ");
        }
        System.out.println();//迭代完每一个List就换行
    }
      

  3.   


    for(String itLists: map.get(names)) 
    {
            
    }
    for( 类型 变量:集合)
    {}
    类型为集合中元素的类型。
      

  4.   


    把for(List <String> itLists: map.get(names))这样写:List <String> itLists = map.get(names);
    for(String listStr:itLists){
    System.out.println(listStr);
    }
      

  5.   

    二楼说的对,for(List <String> itLists: map.get(names))中map.get(names)返回的是一个List<String> 在for each中应该用String变量来迭代。