大家好!最近在学习 泛型时遇到一个疑问,请教大家。
写了一个测试类: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>,该怎么做呢???
写了一个测试类: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>,该怎么做呢???
for(String names:map.keySet())
{
for(String itLists:map.get(names)){
System.out.println(itLists);
System.out.println(" ");
}
System.out.println();//迭代完每一个List就换行
}
for(String itLists: map.get(names))
{
}
for( 类型 变量:集合)
{}
类型为集合中元素的类型。
把for(List <String> itLists: map.get(names))这样写:List <String> itLists = map.get(names);
for(String listStr:itLists){
System.out.println(listStr);
}