A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

        接口Map为实现键映射数据结构定义了一个框架,这种结构可用于存储键值引用的对象。键值的作用与数组中的索引相同,是独一无二的值,用来存取数据结构中指定位置的数据。

        接口Map定义了一种根据键值来存储和检索信息的方式。与ArrayList类似,但是不同的是Map中的键值可以是任何东西。从这个角度来说,ArrayList中的缩影可以认为是一种特殊的键值。

        Map中键值对的映射关系很像现实中的儿子与父亲的对应关系,一个儿子的父亲一定是唯一的,儿子也是唯一的,但是不考虑计划生育的前提下一个父亲可以有多个儿子(此时多个键对应一个值),条条大路通罗马嘛。如下:

Map<String,String> ha=new HashMap<String,String>();
                ha.put("雍正","康熙");
                ha.put("李世民","李渊");
                ha.put("李建成", "李渊");
        Map中声明了大量用于操作字典中数据 的方法。实现类必须实现所有的这些方法才能真正有用。

        Map中最重要的几个方法:

插入元素:put(K key,V value):把指定的值与键相关联

移除元素:remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除

清空:clear();清空Map中的所有元素

关系数:size():返回此映射中的键-值映射关系数



       

        Map中两种取出元素的方法:

1.通过ketSet()取出

        通过keySet()方法取出的是Map存取键值对的键值。然后因为键值是唯一的,因而可以通过键值来取出Map中所有的元素。

        通过键值取出所有元素的代码如下:

                Set set=ha.keySet();//获取Set集合
                Iterator<String> ite=set.iterator();//得到Set集合的迭代器
                while(ite.hasNext()){//遍历迭代器
                        String key=ite.next();//得到键值
                        String value=ha.get(key);//通过键值获取对应的值
                        System.out.println("键值是:"+key+"值是:"+value);//打印出相应的信息
                }

        运行结果是:       

键值是:雍正                值是:康熙
键值是:李建成                值是:李渊
键值是:李世民                值是:李渊

        过程:

(1)把Map中所有键存入Set集合

(2)用迭代方式取出所有键,再通过get方法获取每个键对应的值

        可见,在用ketSet()方法取出所有的值的本质在于把Map集合转化为Set集合,再通过迭代器取出。


2.通过entrySet()取出

        用的方法:通过entrySet()方法返回一个集合:Set<Map.Entry<key,value>>

        作用:将Map集合中的关系存入Set集合,这个关系的数据类型就是Map.Entry。

        什么是Map.Entry?

        Map.Entry也是一个接口,它是Map接口中的一个内部接口。本质在于一个对应关系。比如说,上面的键与值是儿子与父亲的关系,那么其基本的对应关系类型就是:键是值的儿子,那么,我们的Entry也就是一个关系,就是父子关系。


用Map.Entry获取所有元素的方法:

                Set<Map.Entry<String, String>> entrySet=ha.entrySet();//获取集合
                Iterator<Map.Entry<String, String>> it=entrySet.iterator();//获取集合对应的迭代器
                while(it.hasNext()){//遍历这个迭代器中的元素
                        Map.Entry<String,String> en= it.next();//获取对应的元素
                        String key=en.getKey();//获取键值
                        String value=en.getValue();//获取键值对应的值
                        System.out.println("键值是:"+key+"                值是:"+value);//打印相应的信息
                }

        打印的结果是:

键值是:雍正                值是:康熙
键值是:李建成                值是:李渊
键值是:李世民                值是:李渊

        通过entrySet()方法与使用keySet()方法的步骤与原理相似,都是通过把Map集合转化为Set集合再调用Set集合的迭代器而得到相应的值,但不同的是,entrySet()得到的是对应关系的集合,而不是键值的集合。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马