原文链接:
https://www.cnblogs.com/lxqiaoyixuan/p/7156944.html
https://www.cnblogs.com/zzzzw/p/4945915.html
迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
使用: Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型
boolean hasNext():判断容器内是否还有可供访问的元素
void remove():删除迭代器刚越过的元素
迭代使用方法:(迭代其实可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类)
Iterator<Entry<String,String>> iter=map.entrySet().iterator();
获得map的迭代器,用作遍历map中的每一个键值对。Iterator是迭代器,map之前应该定义过,姑且认为是HashMap。<Entry<String,String>>表示map中的键值对都是String类型的。map.entrySet()是把HashMap类型的数据转换成集合类型。map.entrySet().iterator()是去获得这个集合的迭代器,保存在iter里面。
迭代器这么用:
while(iter.hasNext()) {
Entry obj = it.next();//就能获得map中的每一个键值对了
}
Iterator<String> iter; // 声明一个迭代器,泛型里面是String类型,表示迭代元素是String类型的
Iterator<Entry<String,String>> iter; // 而你提供的要稍微复杂一点,迭代元素本身就是一个Entry键值对
Entry<String,String>表示其key值是String,value值也是String。
后面部分:
HashSet set=map.entrySet();//将map类型数据转换成集合set类型的。
iter=set.iterator();//获得集合的迭代器。迭代器只针对集合类型的数据,
因此map类型的必须先转换成集合类型才能使用迭代器去获取元素。
Entry首字母大写是因为它是java提供的类,类首字母大写这是JavaBean规范
keySet 获得的只是key值的集合;
values 获得的是value集合;
entryset 获得的是键值对的集合