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. Java EE之JSP

    1.使用JSP的原因 编写Servlet代码的时候,向响应中输出HTML文档是非常不方便的. PrintWriter writer = response.getWriter(); writer.app ...

  2. bzoj 3190 赛车 半平面交

    直接写的裸的半平面交,已经有点背不过模板了... 这题卡精度,要用long double ,esp设1e-20... #include<iostream> #include<cstd ...

  3. 【纪中集训2019.3.23】Deadline

    题意 描述 一个二分图\((A,B)\),每个点额外有一个颜色0或者1: 匹配时,只能相同颜色的点匹配: 给出\(A\)中的颜色,问如何分配\(B\)种的颜色使得\((A,B)\)的最大匹配最小: 范 ...

  4. md5sum命令行使用注意事项

    Linux下md5sum命令可以直接计算标准输入的hash值,使用方式为 echo -n '123456' | md5sum 注意给echo加上-n表示在尾部不加换行 命令行示例 $ echo -n ...

  5. PPTP协议握手流程分析--转载

    一  PPTP概述   PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网 ...

  6. Chapter9(顺序容器) --C++Prime笔记

    PS:删除元素的成员函数并不检查其参数.在删除元素之前,程序员必须确保它们是存在的. 1.迭代器的范围是[begin,end)左闭右开. 2.对构成迭代器的要求: ①它们指向同一个容器中的元素或者容器 ...

  7. 【Asp.net入门4-02】使用Visual Studio调试器

  8. 2017易观OLAP算法大赛

      大赛简介   目前互联网领域有很多公司都在做APP领域的“用户行为分析”产品,与Web时代的行为分析相类似,其目的都是帮助公司的运营.产品等部门更好地优化自家产品,比如查看日活和月活,查看渠道来源 ...

  9. mysqldump参数详细说明(转)

    Mysqldump参数大全(参数来源于mysql5.5.19源码)   参数 参数说明 --all-databases  , -A 导出全部数据库. mysqldump  -uroot -p --al ...

  10. Docker应用三:Dockerfile使用介绍(以安装redis为例)

    Dockerfile使用介绍 一.Dockerfile介绍 Dockerfile用于自定义创建docker镜像,是由一行行命令组成的文件. Docker file中的命令根据作用分为四类: 1.1.指 ...