entry、map、iterator之间的联系
来源:互联网 发布:怎么用c语言编写软件 编辑:程序博客网 时间:2024/06/06 02:16
entry、map、iterator之间的联系
经常用到HashMap,一直不知道怎么遍历,最近终于有点头绪了。
第一种方式:使用entry
我们经常说map里面存的是键值对,这句话是什么意思呢,就是map里面存了很多< key,value>这种形式的数据。那么键值对在对象里面怎么表示的呢?
就是用entry表示的。一个entry表示一个< key,value>。遍历map实际上就是要获取到每个entry,java里面对map对象提供了一个方法:
map.entrySet()
:用于返回一个存放了很多entry的集合set。
我们知道遍历一个数组可以用增强for-each循环,比如:
for(int i:array){ System.out.println(i);}
同样的,集合遍历的方式也可以用增强for-each循环。问题来了,我们已经有了后面的set:通过map.entrySet()获得,怎么样取得前面的entry类型呢?
java同样提供了一个方法来获取到这个entry:
map.Entry<Object,Object>
代码示例:
Map<Integer,Integer> map = new HashMap<Integer,Integer>();for(map.Entry<Integer,Integer> entry:map.entrySet()){ System.out.println(entry.getKey()+":"+entry.getValue());}
第二种方式:使用Iterator
首先介绍以下什么是Iterator(迭代器)——java.util.Iterator,它是一个标准化遍历各类容器里面的所有对象的方法类。它是一个接口,我们不能直接实例化它,但是能通过一些存储结构如list,set等中的方法获得它的实现类实例化的对象。
有以下三个主要方法:
Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换boolean hasNext():判断容器内是否还有可供访问的元素void remove():删除迭代器刚越过的元素
Iterator是可以带泛型的,如Iterator< Object>,Object表示遍历出来的每一个对象。
那么对于map来说,遍历出来的是键值对,也就是entry,回忆第一种方式,要获得map对应的entry类,可以使用:map.Entry<Object,Object>
于是迭代器写成:Iterator<map.Entry<Object,Object>> iterator
如何实例化键值对的Iterator呢?我们知道map可以返回存放了entry的集合set,而集合可以返回iterator,于是可以这样写:map.entrySet().iterator()
代码示例:
Map<Integer,Integer> map = new HashMap<Integer,Integer>();Iterator<map.Entry<Integer,Integer>> iterator = map.entrySet().iterator();while(iterator.hasNext()){ Map.Entry<Integer,Integer> entry = iterator.next(); System.out.println(entry.getKey()+":"+entry.getValue());java}
- entry、map、iterator之间的联系
- 集合Collection,List,Set,Map,Iterator,Entry
- Map.Entry的好处
- map.entry的介绍
- map.entry 的作用
- 【Map】Map.Entry的使用
- Java中Map和Set之间的关系(及Map.Entry)
- List、Set、Map之间的区别与联系
- List、Set、Map之间的区别与联系
- Map.Entry的相关运用
- Map中Entry的作用
- Map中entry的源代码
- Map.Entry的用法实战
- Map.Entry和Map.entrySet的用法
- Map 和Map.Entry的学习
- Map与Map.Entry的关系
- 关于Map集合的Map.Entry
- java的Map和Map.Entry
- php获取ip的方法
- Android xml 通配符
- HBA卡
- (三)spring cloud云服务
- Jenkins构建
- entry、map、iterator之间的联系
- hashmap解析一
- CentOS 6.5 安装 MySQL 5.6.15并修改MySQL的root用户密码
- 我眼中的单例模式
- Eclipse中取消生成TODO Auto-generated method stub
- 视频监控安防平台-oracle和mysql数据库连接池
- 简单工厂模式
- jqgrid 实现基础的单行编辑功能
- 数学家祖冲之的故事