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. 使用telnet访问百度

    这里主要是玩一下http协议,查看http的header. 1.输入命令telnet访问百度 # telnet www.baidu.com 80 Trying 220.181.112.244... C ...

  2. 遇到问题---java---@value注解为null

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 在xml文件中配置properties文件 例如 cas.authn.mongo.col ...

  3. Android Studio多Module使用 aar 依赖包 丢包解决

    FAQ: AAR打包引用丢包问题, jar, aar, dependency 嵌套层级依赖的丢失 问: aar包中,如何包含第三方依赖库? 如果直接作为module 依赖是没有问题的,但是如果打包成a ...

  4. 【codeforces gym】Increasing Costs

    Portal --> Increasing Costs Description 给你一个\(n\)个点无重边无自环的无向连通图,每条边有一个边权,对于每一条边,询问去掉这条边之后有多少个点到\( ...

  5. 【费用流】【网络流24题】【P1251】 餐巾计划问题

    Description 一个餐厅在相继的 \(N\) 天里,每天需用的餐巾数不尽相同.假设第 \(i\) 天需要 \(r_i\)块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 \(p\) 分;或者把旧 ...

  6. Linux查看动态库.so导出函数列表

    https://blog.csdn.net/chrisnotfound/article/details/80662923

  7. laravel 获取所有表名

    $tables = DB::connection()->getDoctrineSchemaManager()->listTableNames(); 需要 doctrine/dbal 扩展, ...

  8. Chapter 8(查找)

    1.二分查找和插值查找 //************************Search.h*********************************** #ifndef SEARCH_H # ...

  9. 装饰器 and 闭包函数 未完。。。。。

    装饰器是一个返回函数的高阶函数.装饰器=高阶函数+函数嵌套+闭包 装饰器需要遵循的原则:不修改被装饰函数的源代码,不修改被装饰函数的调用方式. 高阶函数 1.函数接收的参数是一个函数名 2.函数的返回 ...

  10. Go_17:GoLang中如何使用多参数属性传参

    我们常常因为传入的参数不确定而头疼不已,golang 为我们提供了接入多值参数用于解决这个问题.但是一般我们直接写已知代码即所有的值都知道一个一个塞进去就好了,但是绝大部分我们是得到用户的大量输入想通 ...