黑马程序员技术交流社区

标题: Map集合的四种遍历方式 [打印本页]

作者: LARK    时间: 2016-10-12 16:30
标题: Map集合的四种遍历方式
Map集合的四种遍历方式,分享:   
        Map<Student, String> hm = new HashMap<Student, String>();
                hm.put(new Student("张三",23), "北京");
                hm.put(new Student("李四",23), "上海");
                hm.put(new Student("王五",24), "广州");
                hm.put(new Student("赵六",25), "深圳");
        //第一种方式:获取所有键的集合,再使用迭代器
                Set<Student> set = hm.keySet();
                Iterator<Student> it1 = set.iterator();
                while(it1.hasNext()){
                        Student key = it1.next();
                        String value = hm.get(key);
                        System.out.println(key + "::" + value);
                }
                System.out.println("-----------------------------------");
        //第二种方式:用keySet()方法获取所有键的集合,再利用增强for
                for(Student key : hm.keySet()){
                        System.out.println(key + "::" + hm.get(key));
                }
                System.out.println("-----------------------------------");
        //第三种方式:获取键值对对象集合,再获取迭代器遍历,再getKey();getValue();
                Set<Map.Entry<Student, String>> entrySet = hm.entrySet();
                Iterator<Map.Entry<Student, String>> it2 = entrySet.iterator();
                while(it2.hasNext()){
                        Map.Entry<Student, String> en = it2.next();
                        Student key = en.getKey();
                        String value = en.getValue();
                        System.out.println(key + "::" + value);
                }
                System.out.println("-----------------------------------");
        //第四种方式:获取键值对对象集合,再用增强for遍历
           即:把原Map双列集合的每一对键值对包装成一个类似Person的对象):Map.Entry(Entry是Map的静态内部类)
                Set<Map.Entry<Student, String>> entrySet2 = hm.entrySet();
                for (Map.Entry<Student, String> entry : entrySet2) {
                        System.out.println(entry.getKey() + "::" + entry.getValue());
                }
作者: 黑马是马    时间: 2016-10-12 17:05
map的键只能是string类型吗不是

作者: 小东先森    时间: 2016-10-12 17:16
黑马是马 发表于 2016-10-12 17:05
map的键只能是string类型吗不是

谁告诉你的?正常是自己定义的泛型,一般Properties的键值的泛型默认为String类型。
作者: gao5867565    时间: 2016-10-12 17:21
黑马是马 发表于 2016-10-12 17:05
map的键只能是string类型吗不是

不是,可以是任意类型的,包括null
作者: songchangchang    时间: 2016-10-12 18:48
长见识啊
作者: LARK    时间: 2016-10-13 00:48
黑马是马 发表于 2016-10-12 17:05
map的键只能是string类型吗不是

,你引起公愤了。

作者: z443863517    时间: 2016-10-13 00:57
学习了

作者: 读书可以当饭吃    时间: 2016-10-13 02:24
其实方式都差不多
作者: chensc    时间: 2016-10-13 20:54
学习学习!
作者: jinjinjin    时间: 2016-10-13 21:08
黑马是马 发表于 2016-10-12 17:05
map的键只能是string类型吗不是

你是猴子派来的逗B么
作者: jinjinjin    时间: 2016-10-13 21:09
学习学习!学习学习!学习学习!学习学习!学习学习!学习学习!学习学习!
作者: Jerry007    时间: 2016-10-13 22:27
我必须来顶顶贴
作者: StriverHao    时间: 2016-10-13 22:54
顶一个,前几天刚学完
作者: IceLoveInFire丶    时间: 2016-10-13 23:07
我可以告诉你增强for的底层就是迭代嘛。
作者: 杨杰锋    时间: 2016-10-13 23:11
学习了{:2_31:}
作者: 琼华掌教    时间: 2016-10-13 23:29
来看看不错噢
作者: LARK    时间: 2016-10-14 00:36
IceLoveInFire丶 发表于 2016-10-13 23:07
我可以告诉你增强for的底层就是迭代嘛。

我知道啊

作者: LShu    时间: 2016-10-14 00:45
路过学习...
作者: 黑马是马    时间: 2016-10-14 08:46
jinjinjin 发表于 2016-10-13 21:08
你是猴子派来的逗B么

不知道所以才问啊,大哥

作者: System.style    时间: 2016-10-14 09:13
可以可以,花式

作者: LARK    时间: 2016-10-15 00:26
Jerry007 发表于 2016-10-13 22:27
我必须来顶顶贴

谢谢顶贴,加油哦

作者: LARK    时间: 2016-10-15 00:32
黑马是马 发表于 2016-10-12 17:05
map的键只能是string类型吗不是

不会不可怕,学会了就是收获,加油啊

作者: 想跳楼    时间: 2016-10-15 00:33
666666 长了知识





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