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文件编写. 二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...
随机推荐
- 单点登录(二)----实战------简单搭建CAS---测试认证方式搭建CAS
我们在上一篇文章中已经介绍了cas以及它的工作流程. 单点登录(一)-----理论-----单点登录SSO的介绍和CAS+选型 本章我们开始动手搭建一个完整的cas服务实现2个web之间的单点登录. ...
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令
转至:http://www.jb51.net/LINUXjishu/43356.html 说明:Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令 ...
- mac 必备工具
iTerm 可以在一个窗口中垂直.水平分割窗口,而不用切换来切换去 一些基本功能如下: 1.分窗口操作:shift+command+d(横向)command+d(竖向) 2.查找和粘贴:command ...
- poj 3294 后缀数组 多字符串中不小于 k 个字符串中的最长子串
Life Forms Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 16223 Accepted: 4763 Descr ...
- linux命令总结之查找命令find、locate、whereis、which、type
我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令. 1.find命令 find是最常用也 ...
- python【文件操作:读写文件】
文件读写模式
- python lambda表达式与三元运算
1.三元运算 格式: 为真时的结果 if 判定条件 else 为假时的结果 #!/usr/bin/python # -*- coding: UTF-8 -*- def f(x, y): # 如果x大于 ...
- vs配置SP++3.0
最近在研究信号处理的C语言算法,突然发现一个西安交大的师兄之前已经写出来了一个完整的库,同样是研究生三年,差别怎么这样大呢. 先从用轮子开始吧. 一.SP++3.0安装及测试 官网下载地址: http ...
- 蓝桥杯 算法提高 3000米排名预测 DFS 递归搜索 next_permutation()使用
#include <iostream> #include <algorithm> #include <queue> #include <cstring> ...
- NGINX生产环境反向代理到后端tomcat配置
#当访问www.kazihuo.com//sichuan-user-te时,跳转到http://10.1.93.61:7005/sichuan-user server { listen ; serve ...