List 列表迭代器
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,双链表实现了List
和Deque
接口。 实现所有可选列表操作,并允许所有元素(包括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 列表迭代器相关推荐
- 列表迭代器ListIterator的用法
ListIterator的父接口是Iterator,是List接口中特有的迭代器. ListIterator在Iterator的基础上,又新添了很多方法: Iterator中的方法: 1.判断是否有下 ...
- 力扣--扁平化嵌套列表迭代器
扁平化嵌套列表迭代器 文章目录 扁平化嵌套列表迭代器 一.题目描述 二.分析 方法一: 代码一: 方法二: 代码二: C++代码: 一.题目描述 /*** // This is the interfa ...
- leetcode 341. Flatten Nested List Iterator | 341. 扁平化嵌套列表迭代器(Java)
题目 https://leetcode.com/problems/flatten-nested-list-iterator/ 这标题,翻译的是人话吗?啥叫扁平化嵌套列表迭代器?.. 题解 比较像深度优 ...
- 每日一题:leetcode341.扁平化嵌套列表迭代器
题目描述 题目分析 这个题目自己大概花了一个小时,虽然是一遍AC,但是速度有点慢,太长时间不写代码导致自己对代码不太敏感,写起来慢腾腾的. 看到这个的想法就是,要用栈来保存列表的迭代器,这样将孩子列表 ...
- 341. 扁平化嵌套列表迭代器
2020-05-24 1.题目描述 扁平化嵌套列表迭代器 2.题解 使用递归即可 3.代码 /*** // This is the interface that allows for creating ...
- 迭代器Iterator列表迭代器ListIterator
文章目录 一.迭代器Iterator 概述 基本操作 注意事项 二.列表迭代器ListIterator 概述 基本操作 注意事项 三.Iterator和ListIterator区别 一.迭代器Iter ...
- 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
递归|迭代的前序遍历 前言 一.扁平化嵌套列表迭代器 二.前序遍历(无需访问非叶节点) 1.递归实现 2.栈模拟 3.惰性栈模拟(next时再入栈) 总结 参考文献 前言 问题转换:将需求确认,结合已 ...
- python列表迭代器_关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- leetcode 341. 扁平化嵌套列表迭代器(dfs)
给你一个嵌套的整型列表.请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数. 列表中的每一项或者为一个整数,或者是另一个列表.其中列表的元素也可能是整数或是其他列表. 示例 1: 输入: [[1 ...
最新文章
- AI 芯片的分类及技术
- java 彩票系统_JAVA版彩票随机生成系统
- 微信支付异常:appid and openid not match
- python流程图基本元素-2-2:python之控制结构
- python filter函数 字符串_Python数组条件过滤filter函数使用示例
- Java 实现单例模式的 9 种方法
- mysql中的sql_mysql中的sql语句
- VS2015新建项目无法选择framework 4.6.2
- 因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
- [理解ASP.NET Core框架]一个五十行的控制台Web
- PPT(母版的使用))
- 动态SQL之、条件判断(转)
- SupeSite模板中的代码代表什么意思
- 黑马优购uni-app
- 艾司博讯:拼多多批量发货怎么做?
- 正则表达式匹配行首和行尾
- 码农翻身之大话编程篇:8 TCP/IP之蓟辽督师
- TCL脚本语言详解(1)
- C# 一步步连接操作ACCESS数据库
- 单例模式的两种实现方式:恶汉式和懒汉式
热门文章
- 【论文理解】Batch Normalization论文中关于BN背景和减少内部协变量偏移的解读(论文第1、2节)
- 黑苹果OC引导注入_黑苹果Clover 引导删除多余启动项教程
- 警惕:北大清华新国宝帮的崛起
- 十几行代码搞定Android调用支付宝支付
- 06.System V 消息队列
- 输入自然数n,将n分解为质因子连乘的形式输出。例如:输入756,则显示为756=2*2*3*3*3*7
- Dev C++单步调试/debug详细图解
- 使用的一些支持swift3.0的开源库
- 机床遇到这种故障该怎么办?
- 【每日英文】2021.8.9