iterator的用法
1.什么是Iterator?
Iterator提供了对集合迭代的方法,每个集合都可以返回一个Iterator实例,迭代器可以在迭代的过程中删除集合的底层元素,但是不能直接调用集合的remove()方法移除,可以使用Iterator中的remove()方法进行移除。
- 1
2.在Iterator接口中定义了三个方法:
- hasNext() 如果有元素则继续迭代,返回true
- next() 返回迭代的元素
- remove() 移除返回的元素
- 1
- 2
- 3
3.在list集合中是用Iterator
Iterator中只提供了删除的方法,如果想要在遍历的过程中添加元素可以是用ListIterator,ListIterator继承了Iterator接口,提供一下几种方法:
- 1
- void hasPrevious() 判断游标前面是否有元素;
- Object previous() 返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;
- int nextIndex() 返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;
- int previousIndex() 返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;
- void add(E) 在游标 前面 插入一个元素,注意,是前面
- void set(E) 更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;
- void remove() 删除迭代器最后一次操作的元素,注意事项和 set 一样。
import com.sun.media.sound.SoftTuning;import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;/*** Created by lixiaoshuang on 2018/1/29.*/
public class Iterator {public static void main(String[] args) {//使用iterator移除元素List list = new ArrayList();list.add(1);list.add(2);list.add(3);java.util.Iterator iterator = list.iterator();while (iterator.hasNext()) {if (iterator.next().equals(2)) {iterator.remove();}}System.out.println(list.toString());//使用ListIterator进行操作List list2 = new ArrayList();list2.add(4);list2.add(5);list2.add(6);ListIterator listIterator = list2.listIterator();while (listIterator.hasNext()) {Object next = listIterator.next();if (next.equals(5)) {//移除5,并在5的位置上添加一个4listIterator.remove();listIterator.add(4);System.out.println("判断游标前边是否有元素:" + listIterator.hasPrevious());System.out.println("返回游标前边的索引元素:" + listIterator.previousIndex());System.out.println("返回游标后边的索引元素:" + listIterator.nextIndex());}//更新6为8if (next.equals(6)) {listIterator.set(8);}}System.out.println(list2.toString());}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
4.在set集合中使用Iterator
public class SetIterator {public static void main(String[] args){Set set = new HashSet();set.add(1);set.add(2);set.add(3);java.util.Iterator iterator = set.iterator();while (iterator.hasNext()){if (iterator.next().equals(2)){iterator.remove();}}System.out.println(set.toString());}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
5.在Map集合中使用Iterator
public class MapOutput { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1, "aaa"); map.put(2, "bbb"); map.put(3, "ccc"); map.put(4, "ddd"); Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator(); while(it.hasNext()){ Map.Entry<Integer,String> entry=it.next(); System.out.println("key="+entry.getKey()+","+"value="+entry.getValue()); } }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet"></div>
iterator的用法相关推荐
- boost::iterator::permutation_iterator用法的测试程序
boost::iterator::permutation_iterator用法的测试程序 实现功能 C++实现代码 实现功能 boost::iterator::permutation_iterator ...
- boost::iterator的用法测试实例
boost::core模块boost::iterator的用法测试实例 实现功能 C++实现代码 实现功能 boost::core模块boost::iterator的用法测试实例 C++实现代码 #i ...
- STL迭代器(iterator)用法详解
C++ STL迭代器(iterator)用法详解 无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实 ...
- 迭代器Iterator的用法
迭代器Iterator的用法 和枚举一样,表示一些对象的集合,主要用于对数组进行遍历,定义如下: package java.util; public interface Iterator { bool ...
- C++迭代器(iterator)用法
C++迭代器(iterator)用法 1.简述 迭代器是一种检查容器内元素并遍历元素的数据类型 2.vector示例 //将vector的元素值全部修改为2 vector<int> v(1 ...
- Iterator 的用法
今天在看别人程序时看到 Iterator 在程序中用法,感觉自己对这个Iterator 好像不知道似的,确实也不太清楚,平时写程序也没有用过,到网上查了下它的用法,感觉也不是很很难,做过笔记.以前可以 ...
- iterator的用法 | reverse_iterator的封装实现
进阶C++__STL__容器list使用方法[简单易懂]https://blog.csdn.net/qq_61386381/article/details/125922910 进阶C++__STL__ ...
- mysql迭代器_迭代器是什么,C++ STL迭代器(iterator)用法详解
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用"迭代器(iterator)"来实现.那么,迭代器到底是什么呢? 我们知道,尽管不同 ...
- s:iterator的用法
转自:http://blog.sina.com.cn/s/blog_5bd6b451010130if.html struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等以下几个简 ...
- java it_Java中的Iterator的用法
Iterator(迭代器) 迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常器被称为"轻量级"对象,因为创建它的代价 ...
最新文章
- Linux驱动之LCD驱动编写
- 安卓问题总结一(The connection to adb is down)
- REPL (read-evaluate-print-loop)概念-读取评估打印循环
- tcpdump抓两个网卡的包_tcpdump 抓包统计 分享助,请问用tcpdump抓包后,如何查看每个包...
- 回顾 | 进击吧! Blazor !第四期 组件开发
- centos 7下安装mysql_Centos7下安装MySQL5.7(数据库的最全安装方法)
- 32路视频光端机性能指标及视频特性介绍
- 电视如果使用独立显卡会怎么样?
- mysql 窗口函数_7、MySQL高级功能(窗口函数)
- centos mysql5.7主从同步配置_centos 7 配置 mysql 5.7 主从复制
- 高职高考数学可以用计算机吗,将高职高考数学成绩从39分提到120分,3个月时间可能吗?...
- springboot启动类
- css元素可拖动,css3实现可拖动的魔方3d效果
- PHP 一一 微信公众号开发(二次开发)
- 计算机名打印机无法共享,打印机共享不了怎么回事 打印机共享不了原因和解决办法【详解】...
- 北京师范大学计算机试题二答案,北京师范大学期末计算机试题二
- 对挣钱与財富等三个问题的思考
- Retrying connect to server: xxx.xxx.xxx.xxx:8032. Already tried 0 time(s)
- php音频上传失败,flash导入音乐失败怎么办
- 拼多多新手卖家必备知识,你掌握了几点?