黑马程序员技术交流社区

标题: map.entry()问题 [打印本页]

作者: 疯疯疯疯疯子    时间: 2015-8-18 20:37
标题: map.entry()问题
本帖最后由 疯疯疯疯疯子 于 2015-8-18 20:42 编辑

import java.util.*;
public class test1 {

        public static void main(String[] args) {
                Map<String,String> map = new HashMap<String,String>();
                map.put("k1", "v1");
                map.put("k2", "v2");
                map.put("k3", "v3");
               
                Set set = map.entrySet();
                Iterator it =set.iterator();
                while(it.hasNext())
                {
                        Map.Entry me=it.next();
                System.out.println(me.getKey()+" "+me.getValue());        
                        
                }


程序如上,程序中it.next();会出错,求知道,
然后我加了泛型,就不会出错了,为什么?
作者: Zack    时间: 2015-8-18 20:58
加了泛型也会出错,因为next()函数返回的是Object对象,不能自动转成Map.Entry类型,必须手动强转
Map.Entry me = (Map.Entry) it.next();改成这样就可以了
作者: 疯疯疯疯疯子    时间: 2015-8-18 23:10
Zack 发表于 2015-8-18 20:58
加了泛型也会出错,因为next()函数返回的是Object对象,不能自动转成Map.Entry类型,必须手动强转
Map.Entr ...

我加了泛型,不会出错啊,倒是用了你这个强转的会出错
作者: sven556677    时间: 2015-8-19 07:43
迭代器Iterator it =set.iterator();这个地方要加泛型吧,迭代器也要加知道每一次迭代的类型。
作者: morning_    时间: 2015-8-19 08:05
迭代器要用与Map相同的泛型。Iterator<Map.Entry<String,String>> it = entrySet.iterator();
作者: kevin986745    时间: 2015-8-19 08:34
楼上的说的很对




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2