java基础29 迭代器 listIterator() 及各种遍历集合的方法
listIterator() 迭代器包含了 Iterator() 迭代器中的所有方法。
1、ListIterator的常用方法
hasPrevious() :判断是否还有上一个元素,有则返回true (反向遍历)
previous() :返回列表中的上一个元素,并向后(上)移动光标位置
next() :返回列表中的下一个元素,并且前进光标位置
hasNext() :判断是否还有下一个元素,有则返回true (正向遍历)
set(E e) :用指定的元素替换由 next()或 previous()返回的最后一个元素
add(E e):将指定的元素插入列表的末尾
实例
package com.dhb.collection; import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator; /**
* @author DSHORE / 2018-5-16
* ListIterator是一个接口
*/
public class Demo5 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("狗娃");
list.add("晶晶");
list.add("亮亮");
list.add("美美");
list.add("铁蛋"); ListIterator<String> it=list.listIterator();//返回一个list接口中的特有迭代器
System.out.println("获取下一个元素:"+it.next()); //返回值:狗娃
System.out.println("是否有上一个元素:"+it.hasPrevious()); //返回值:true
System.out.println("获取上一个元素:"+it.previous()); //返回值:狗娃
while(it.hasNext()){//正序遍历 hasNext():判断集合中是否还有下一个元素
System.out.print(it.next()+",");//返回值:狗娃,晶晶,亮亮,美美,铁蛋,
} while(it.hasPrevious()){//反序遍历 hasPrevious():判断集合中是否还有上一个元素
System.out.println(it.previous());
}
it.next();
it.next();//下移了两位
it.set("张三");//把晶晶替换成张三了
System.out.println("集合的元素:"+list);//返回值:[狗娃, 张三, 亮亮, 美美, 铁蛋]
}
}
2、迭代器在遍历元素时需要注意的事项
2.1、在迭代元素的过程中,不允许使用集合对象改变集合中元素的个数.
2.2、如果需要添加或者删除,只能使用迭代器里面的方法进行操作.
2.3、如果使用了集合对象改变了集合中元素的个数,那么就会报:ConcurrentModificationException异常
实例
package com.dhb.collection; import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator; /**
* @author DSHORE / 2018-5-16
*
*/
public class Demo7 { public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("铁蛋"); ListIterator<String> it=list.listIterator();
while(it.hasNext()){
System.out.print(it.next()+",");//返回结果:张三,李四,铁蛋,
it.add("二狗子"); //it是ListIterator迭代器的对象,所以不会报异常
//list.add("二狗子");//报异常:ConcurrentModificationException异常
}
System.out.println(list);//返回结果:[张三, 二狗子, 李四, 二狗子, 铁蛋, 二狗子] while循环了三次,故有三个二狗子
}
}
3、用三种方式遍历集合中的元素
第一种:for循环遍历(get方法)
第二种:增强for循环遍历
第三种:使用迭代器正序遍历
第四种:使用迭代器逆序遍历
package com.dhb.collection; import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator; /**
* @author DSHORE / 2018-5-16
*
*/
public class Demo6 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五"); System.out.println("=============for循环遍历(get方法)=============");
for (int i = ; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("=============增强for循环遍历=============");
for (String s:list){
System.out.println(s);
}
System.out.println("============使用迭代器正序遍历============");
ListIterator<String> it=list.listIterator();
while(it.hasNext()){
System.out.println(it.next());
} System.out.println("============使用迭代器逆序遍历============");
while(it.hasPrevious()){
System.out.println(it.previous());
}
}
}
运行结果图

|
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:http://www.cnblogs.com/dshore123/p/9047060.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
java基础29 迭代器 listIterator() 及各种遍历集合的方法的更多相关文章
- JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)
1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...
- scala的多种集合的使用(3)之遍历集合的方法
遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...
- Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出
Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...
- Java基础语法(自定义类、ArrayList集合)
Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...
- Java基础:Object类中的equals与hashCode方法
前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象 对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...
- Java基础六(自定义类、ArrayList集合)
今日内容介绍1.自定义类型的定义及使用2.自定义类的内存图3.ArrayList集合的基本功能4.随机点名器案例及库存案例代码优化 ###01引用数据类型_类 * A: 数据类型 * a: java中 ...
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类: Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...
- java基础(29):JDBC、DBUtils
1. JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问 ...
- Java基础学习(四)-- 接口、集合框架、Collection、泛型详解
接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写. 二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...
随机推荐
- Active Directory PowerShell模块收集AD信息
0x00 前言简介 Microsoft为Windows Server 2008 R2(以及更高版本)提供了多个Active Directory PowerShell cmdlet,这大大简化了以前需要 ...
- 理解 OAuth 2.0
理解OAuth 2.0 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 一.简介 OAuth是一个关于授权(authorization)的开 ...
- 【bzoj2938】【Poi2000】病毒
题解: 对病毒串建立ac自动机: 有一个无限长的串等价于可以一直在自动机上匹配,等价于自动机上的转移有环: 当然前提是去掉病毒节点的fail子树: 写一个dfs记录是否在栈中,来过没有找到就不必再来了 ...
- 关于[x/y]一些小想法
[x/y],即x除以y下取整 (不会LATEX) 1.对于给定的x,对于所有的1<=y<=x, [x/y]一共有√x种取值. 证明: 对于y<=√x,y有根号种,所以值最多根号种.对 ...
- HDU--4099
题目: Revenge of Fibonacci 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099 分析:字典树的应用.在求Fibonacci的前 ...
- supervisor "unix:///var/run/supervisor/supervisor.sock no such file" 解决方法
如果是没有开启 supervisord 服务的情况下出现这种报错,可以先 systemctl start supervisor 试试, 如果不是,那就 sudo touch /var/run/supe ...
- gdb调试4--回退
加入你正在使用GDB7.0以上版本的调试器并且运行在支持反向调试的平台,你就可以用以下几条命令来调试程序: reverse-continue 反向运行程序知道遇到一个能使程序中断的事件(比如断点,观察 ...
- 【Asp.net入门05】第一个ASP.NET 应用程序-测试Asp.net程序
测试示例应用程序 本部分内容: ASP.NET应用程序测试方法 web窗体访问过程 Visual Studio工具栏上有一个下拉列表,其中列出了工作站上已安装的浏览器的名称(单击浏览器名称右侧的向下箭 ...
- python 多线程中的同步锁 Lock Rlock Semaphore Event Conditio
摘要:在使用多线程的应用下,如何保证线程安全,以及线程之间的同步,或者访问共享变量等问题是十分棘手的问题,也是使用多线程下面临的问题,如果处理不好,会带来较严重的后果,使用python多线程中提供Lo ...
- SourceTree使用SSH克隆码云项目
SourceTree使用SSH克隆码云项目 觉得有用的话,欢迎一起讨论相互学习~Follow Me SourceTree使用SSH克隆码云项目 参考文献 https://blog.csdn.net/q ...