Day1--JAVA小白,愿自学成才

写在前面:

大四狗,专业方向是.Net,有点坑壁,企业校招都没有几个招收.NET开发的。。故痛下决心,转战JAVA。已经自学了一段时间了,进度有点慢,今天开始接触到了一些集合的内容,感觉挺有趣的,所以打算写下来,给能看到的同仁一点消遣吧。。。我就姑且从Day1开始写起吧。

 

集合快要学完了,学到最后却发现Map还是有点意思的,Map集合说白了就是键值对的集合,一个key对应一个value,一夫一妻。且保证键的唯一性。

讲到Map的遍历,必然会让人联想到Iterator迭代器的使用。Iterator是一个很经典的面向对象设计模式的体现,它把访问逻辑从不同集合中抽出来,从而使用户在不了解集合的内部逻辑结构情况下,可以实现对集合元素的遍历。

很遗憾的是,Map集合并没有提供Iterator方法,Map集合不可以直接使用迭代器Iterator来实现对集合的遍历。这个时候我们就非常想念Collection,因为Collection集合是可以使用Iterator来实现遍历的,异常便利。我们是不是可以将Map集合向Collection集合转型呢??查询API之后,我们会发现Map集合有一个方法让我们一场兴奋,那就是keySet(),而且返回值类型是Set<K>,也就是说,我们可以使用这个方法来实现将Map集合中的所有Key全都存放在Set集合中。我们拿到了key,距离value还会远吗?

下面举例示范一下:

Map<Integer,String> map=new HashMap<Integer,String>();

map.add(5,"abc");

map.add(2,"zhangsan");

map.add(4,"lisi");

 

Set<String> keySet=map.keySet();

//这个时候keySet里面就拿到了所有的key,可以使用Iterator进行迭代

Iterator<Integer> it=keySet.iterator();

while(it.hasNext()){

  Integer key=it.next();

  String value=map.get(key);

  System.out.println(key+":"+value);

}

除了上面一个方法之外,我们还可以看到另一个方法entrySet(),返回值是Set<Map.Entry<K,V>>,其中Entry是Map接口的内部接口,返回值意思是包含映射关系的Set视图。说白了,就是返回一个key和value之间的关系。那么得到了这个关系,我们如何获得key和value呢?这时候我们会发现,这个Map.Entry内部接口提供了两个方法:getKey()和getValue()!这样我们就可以得到了key和value。

示例代码如下:

Map<Integer,String> map=new HashMap<Integer,String>();

map.add(5,"abc");

map.add(2,"zhangsan");

map.add(4,"lisi");

 

 

Set<Map.Entry<Integer,String>> entrySet=map.entrySet();

Iterator<Map.Entry<Integer,String>> it=entrySet.iterator();

while(it.hasNext()){

  Map.Entry<Integer,String> me=it.next();//这里注意Iterator里迭代的内容是什么,是Map.Entry<Integer,String>类型

  Integer key=me.getKey();

  String value=me.getValue();

  syso(key+":"+value);

}

这样,我们就完成了对Map集合元素的迭代。。

当然,迭代器那两行代码可以简化成一行:

Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator();

---------------------------------------------------------华丽的分割线--------------------------------------------------

这就是我在学习Map集合过程中的一点点心得,这里分享出来。。如有不妥之处,还请各位大神批评指正。

 

posted @ 2017-05-01 21:40  一十五画生  阅读(132)  评论(0编辑  收藏  举报