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() 及各种遍历集合的方法的更多相关文章

  1. JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)

    1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...

  2. scala的多种集合的使用(3)之遍历集合的方法

    遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...

  3. Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出

    Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...

  4. Java基础语法(自定义类、ArrayList集合)

    Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...

  5. Java基础:Object类中的equals与hashCode方法

    前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象   对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...

  6. Java基础六(自定义类、ArrayList集合)

    今日内容介绍1.自定义类型的定义及使用2.自定义类的内存图3.ArrayList集合的基本功能4.随机点名器案例及库存案例代码优化 ###01引用数据类型_类 * A: 数据类型 * a: java中 ...

  7. 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换

    ------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类:        Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...

  8. java基础(29):JDBC、DBUtils

    1. JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问 ...

  9. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...

随机推荐

  1. 单点登录(二)----实战------简单搭建CAS---测试认证方式搭建CAS

    我们在上一篇文章中已经介绍了cas以及它的工作流程. 单点登录(一)-----理论-----单点登录SSO的介绍和CAS+选型 本章我们开始动手搭建一个完整的cas服务实现2个web之间的单点登录. ...

  2. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令

    转至:http://www.jb51.net/LINUXjishu/43356.html 说明:Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令 ...

  3. mac 必备工具

    iTerm 可以在一个窗口中垂直.水平分割窗口,而不用切换来切换去 一些基本功能如下: 1.分窗口操作:shift+command+d(横向)command+d(竖向) 2.查找和粘贴:command ...

  4. poj 3294 后缀数组 多字符串中不小于 k 个字符串中的最长子串

    Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 16223   Accepted: 4763 Descr ...

  5. linux命令总结之查找命令find、locate、whereis、which、type

    我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令. 1.find命令 find是最常用也 ...

  6. python【文件操作:读写文件】

    文件读写模式

  7. python lambda表达式与三元运算

    1.三元运算 格式: 为真时的结果 if 判定条件 else 为假时的结果 #!/usr/bin/python # -*- coding: UTF-8 -*- def f(x, y): # 如果x大于 ...

  8. vs配置SP++3.0

    最近在研究信号处理的C语言算法,突然发现一个西安交大的师兄之前已经写出来了一个完整的库,同样是研究生三年,差别怎么这样大呢. 先从用轮子开始吧. 一.SP++3.0安装及测试 官网下载地址: http ...

  9. 蓝桥杯 算法提高 3000米排名预测 DFS 递归搜索 next_permutation()使用

    #include <iostream> #include <algorithm> #include <queue> #include <cstring> ...

  10. NGINX生产环境反向代理到后端tomcat配置

    #当访问www.kazihuo.com//sichuan-user-te时,跳转到http://10.1.93.61:7005/sichuan-user server { listen ; serve ...