1. ListIterator 概述

​ 用于允许程序员沿任一方向遍历列表的列表的迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。 A ListIterator没有电流元素; 其光标位置始终位于通过调用previous()返回的元素和通过调用next()返回的元素next() 。 长度为n的列表的迭代器具有n+1可能的光标位置

2. ListIterator 方法

2.1

方法名 说明
E next() 返回列表中的下一个元素
boolean hasNext() 如果遍历正向列表,列表迭代器有多个元素,返回 true
E previous() 返回列表中的上一个元素
boolean hasPrevious() 如果遍历反向列表,列表迭代器有多个元素, 返回 true
void add( E e ) 将指定的元素插入列表

2.2 方法使用

    public static void main(String[] args) {//创建集合对象List<String> list = new ArrayList<String>();//向集合中添加对象list.add("Hello");list.add("World");list.add("Java");//通过List集合的listIterator()方法得到/*ListIterator<String> sli = list.listIterator();while (sli.hasNext()) {String s = sli.next();System.out.println(s); // 输出结果:Hello  World  Java}while (sli.hasPrevious()) {String s = sli.previous();System.out.println(s); //输出结果:Java   World   Hello}*///void  add( E  e )    将指定的元素插入列表//获取列表迭代器ListIterator<String> li = list.listIterator();while (li.hasNext()) {String s = li.next();if (s.equals("World")) {li.add("Javaee");}}System.out.println(list); //输出结果:[Hello, World, Javaee, Java]}

3.增强 for 循环

​ 实现此接口允许对象成为增强 for 语句的目标,内部原理是 Iterator

3.1 使用

    public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};for (int i : arr) {System.out.print("\t" + i);// 1   2   3   4   5}String[] array = {"hello", "world", "java"};for (String s : array) {System.out.print("\t" + s);//   hello   world   java}List<String> list = new ArrayList<String>();list.add("Hello");list.add("World");list.add("Java");for (String s : list) {System.out.print("\t" + s);//    Hello   World   Java}}

3.2 验证内部原理是 Iterator 迭代器

        //验证内部原理是Iterator迭代器for (String s:list){if (s.equals("World")){list.add("Javaee");//ConcurrentModificationException}}

4. list 集合子类的特点

​ ArrayList ,可调整大小的数组的实现List接口。 实现所有可选列表操作,并允许所有元素,包括null 。 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。(数组:查询快,增删慢)

​ LinkedList,双链表实现了ListDeque接口。 实现所有可选列表操作,并允许所有元素(包括null )。 (链表:查询慢,增删快)

5. 三种遍历集合方式

  • 迭代器:集合特有的遍历方式
  • 普通 for :带有索引的遍历方式
  • 增强 for :最方便的遍历方式

6. LinkedList 集合的特有功能

6.1 方法说明

方法名 说明
public void addFirst(E e) 在该列表开头插入指定的元素
public void addLast(E e) 将指定的元素追加到此列表的末尾
public E getFirst() 返回此列表中的第一个元素
public E getLast() 返回此列表中的最后一个元素
public E removeFirst() 从此列表中删除并返回第一个元素
public E removeLast() 从此列表中删除并返回最后一个元素

6.2 方法使用

    public static void main(String[] args) {//创建LinkedList集合对象LinkedList<String> linkedList = new LinkedList<String>();//添加元素linkedList.add("hello");linkedList.add("world");linkedList.add("java");// public void addFirst(E e) 在该列表开头插入指定的元素//linkedList.addFirst("ZJSJ"); // [ZJSJ, hello, world, java]// public void addLast(E e)   将指定的元素追加到此列表的末尾//linkedList.addLast("ZJSJ"); // [hello, world, java, ZJSJ]// public E getFirst()   返回此列表中的第一个元素//String first = linkedList.getFirst();//System.out.println(first); // hello// public E getLast()   返回此列表中的最后一个元素// String last = linkedList.getLast();//System.out.println(last); // java// public E removeFirst()  从此列表中删除并返回第一个元素//linkedList.removeFirst(); // [world, java]// public E removeLast()  从此列表中删除并返回最后一个元素linkedList.removeLast(); // [hello, world]//输出集合System.out.println(linkedList);}

List 列表迭代器相关推荐

  1. 列表迭代器ListIterator的用法

    ListIterator的父接口是Iterator,是List接口中特有的迭代器. ListIterator在Iterator的基础上,又新添了很多方法: Iterator中的方法: 1.判断是否有下 ...

  2. 力扣--扁平化嵌套列表迭代器

    扁平化嵌套列表迭代器 文章目录 扁平化嵌套列表迭代器 一.题目描述 二.分析 方法一: 代码一: 方法二: 代码二: C++代码: 一.题目描述 /*** // This is the interfa ...

  3. leetcode 341. Flatten Nested List Iterator | 341. 扁平化嵌套列表迭代器(Java)

    题目 https://leetcode.com/problems/flatten-nested-list-iterator/ 这标题,翻译的是人话吗?啥叫扁平化嵌套列表迭代器?.. 题解 比较像深度优 ...

  4. 每日一题:leetcode341.扁平化嵌套列表迭代器

    题目描述 题目分析 这个题目自己大概花了一个小时,虽然是一遍AC,但是速度有点慢,太长时间不写代码导致自己对代码不太敏感,写起来慢腾腾的. 看到这个的想法就是,要用栈来保存列表的迭代器,这样将孩子列表 ...

  5. 341. 扁平化嵌套列表迭代器

    2020-05-24 1.题目描述 扁平化嵌套列表迭代器 2.题解 使用递归即可 3.代码 /*** // This is the interface that allows for creating ...

  6. 迭代器Iterator列表迭代器ListIterator

    文章目录 一.迭代器Iterator 概述 基本操作 注意事项 二.列表迭代器ListIterator 概述 基本操作 注意事项 三.Iterator和ListIterator区别 一.迭代器Iter ...

  7. 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]

    递归|迭代的前序遍历 前言 一.扁平化嵌套列表迭代器 二.前序遍历(无需访问非叶节点) 1.递归实现 2.栈模拟 3.惰性栈模拟(next时再入栈) 总结 参考文献 前言 问题转换:将需求确认,结合已 ...

  8. python列表迭代器_关于Python中迭代器的作用

    迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...

  9. leetcode 341. 扁平化嵌套列表迭代器(dfs)

    给你一个嵌套的整型列表.请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数. 列表中的每一项或者为一个整数,或者是另一个列表.其中列表的元素也可能是整数或是其他列表. 示例 1: 输入: [[1 ...

最新文章

  1. AI 芯片的分类及技术
  2. java 彩票系统_JAVA版彩票随机生成系统
  3. 微信支付异常:appid and openid not match
  4. python流程图基本元素-2-2:python之控制结构
  5. python filter函数 字符串_Python数组条件过滤filter函数使用示例
  6. Java 实现单例模式的 9 种方法
  7. mysql中的sql_mysql中的sql语句
  8. VS2015新建项目无法选择framework 4.6.2
  9. 因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
  10. [理解ASP.NET Core框架]一个五十行的控制台Web
  11. PPT(母版的使用))
  12. 动态SQL之、条件判断(转)
  13. SupeSite模板中的代码代表什么意思
  14. 黑马优购uni-app
  15. 艾司博讯:拼多多批量发货怎么做?
  16. 正则表达式匹配行首和行尾
  17. 码农翻身之大话编程篇:8 TCP/IP之蓟辽督师
  18. TCL脚本语言详解(1)
  19. C# 一步步连接操作ACCESS数据库
  20. 单例模式的两种实现方式:恶汉式和懒汉式

热门文章

  1. 【论文理解】Batch Normalization论文中关于BN背景和减少内部协变量偏移的解读(论文第1、2节)
  2. 黑苹果OC引导注入_黑苹果Clover 引导删除多余启动项教程
  3. 警惕:北大清华新国宝帮的崛起
  4. 十几行代码搞定Android调用支付宝支付
  5. 06.System V 消息队列
  6. 输入自然数n,将n分解为质因子连乘的形式输出。例如:输入756,则显示为756=2*2*3*3*3*7
  7. Dev C++单步调试/debug详细图解
  8. 使用的一些支持swift3.0的开源库
  9. 机床遇到这种故障该怎么办?
  10. 【每日英文】2021.8.9