黑马程序员——Map

来源:互联网 发布:淘宝客服这个工作好吗 编辑:程序博客网 时间:2024/05/16 07:45

点击打开链接 点击打开链接 点击打开链接 <a href="target=" _xhe_href="target=" blank"="">.Net培训、期待与您交流!">点击打开链接 点击打开链接

Map

Map也是集合中的一个分类,但是他与ListSet有些区别,ListSet是用于存储单个单个对象的集合,而Map是成对成对出现的,也就是说,Map中,一个对象其实是有两个对象组成的,我们在使用的时候,就是使用一对一对的对象,比如说:我们登录某个软件需要账户和密码,在同一个软件中,他的账户是具有唯一性的,而密码却是非唯一的,比如我们常用的聊天软件QQ,每个人的QQ号是唯一的,而密码却是按照某种规则随意设定了,两个账号的密码是可以完全相同的。使用Map的方法是创建Map的实现类对象,因为Map是一个接口,而我们知道接口是不允许被创建实例的,创建的形式可以使常用实现类对象的实例,也可以使用多态来构建实例。

        例如:

       HashMap  hm = new HashMap();  // 普通形式的创建

        Map m = new HashMap(); //多态形式创建、

        在创建好对象以后,我们需要对Map进行存储和添加数据,我们知道,ListSet

加元素是用add方法添加的,

        例如:

               m.add(element)//element可以使任意的元素(此时的m代表的是ListSet)

       Map中添加的是一对一对的元素,这时候就需要一次传入两个element,感觉以前

add方法添加的都是单个element,现在添加两个element,就有点不适应,所以就使

put方法来 添加(这是我个人的理解).

        例如:

                m.put(key, vaule);//key代表键,vaule代表值。我们常说键值对。将这两个元

素代表成一个对象,使用的其实就是这个对象。因为他们是相互依存的,只有账号没有

密码是登陆不了软件的,当然有密码没有账号更是不能登陆的。所以,我们将这两个元

素当成是一个对象。

             在学链表的时候,我们知道他的规则是将元素封装在一个对象中,而这个对象

中又有一个字段,可以存储另一个对象的地址,这样就可以将他们一个个的串联起来。

由此我们能够想到,Map不也是有两个元素嘛,我们也可以将他们封装成一个对象来进

行存储,那么我们获取到单个的这个对象不就能够获取到这个对象里面的keyvaule吗?在Map中,这个特别的对象我们就叫Map.Entry他提供了可以获取键和值的方法。当然因为他的唯一性,所以直接调用方法就可以返回相应的值,不在需要给方法传入具体参数

   getKey();//返回该对象的键。

   getValue();//返回该对象的值。

 

如何具体使用呢?

如何获取Entry?在创建map对象以后,可以调用map中的entryset();方法。该方法可以获取到该map的所有entry对象,然后将这些对象装在一个set集合中,这样我们就可以通过遍历set的方式来获取每个对象的keyvaule。使用Entry最频繁的是用于遍历。因为Map没有索引,不能用以往的遍历方式来遍历。如果不用遍历我们可以通过map本身的方法来获取相应的键和值。因为键的唯一性,我们可以通过找到key来查询与之对应的value。但是相反,value是可以有相同存在的,所以不能通过value来查找相对应的key

还有一种Map特有的遍历方式,就是通过keySet()方法。他会获取到该Map所有的key值,将获取到的key值存放在set集合中,在通过遍历set取得每一个key值,再通过get()方法取得该key值上的value

点击打开链接 点击打开链接 点击打开链接 <a href="target=" _xhe_href="target=" blank"="">.Net培训、期待与您交流!">点击打开链接 点击打开链接

 

0 0
原创粉丝点击