首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏WriteOnRead

    JDK源码分析-List, Iterator, ListIterator

    (0) ListIterator<E> listIterator(); // 返回元素的 listIterator(指定起始位置) ListIterator<E> listIterator(int index super E> action); ListIterator,列表的迭代器,继承自 Iterator,可以从列表的两端进行遍历(Iterator 只能从前到后)。 ListIterator 继承自 Iterator. 2. 都有 remove() 方法,都可以删除对象。 3. 都有 next() 和 hasNext() 方法,都可以实现向后遍历;而 ListIterator 有 previous() 和 hasPrevious() 方法,可以向前遍历。 4. ListIterator 有 add() 和 set() 方法,可以向 List 添加和修改元素;而 Iterator 不能。

    46220发布于 2019-08-16
  • 来自专栏海说

    14、Iterator跟ListIterator的区别

    对List来说,也可以通过listIterator()取得其迭代器,两种迭代器在有些时候是不能通用的,Iterator和ListIterator主要区别在以下方面:      1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能。      2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向 都可实现删除对象,但是ListIterator借助set()方法可以实现对象的修改。Iierator仅能遍历,不能修改。 因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。其实,数组对象也可以用迭代器来实现。

    1.1K00发布于 2017-12-28
  • 来自专栏拭心的安卓进阶之路

    Java 集合源码解析(2):ListIterator

    今天心情和股票一样红,还是学学 ListIterator 吧! ListIterator 根据官方文档介绍, ListIterator 有以下功能: 允许我们向前、向后两个方向遍历 List; 在遍历时修改 List 的元素; 遍历时获取迭代器当前游标所在位置。 ListIterator 继承自 Iterator 接口(关于 Iterator 的介绍 请点这里),在 Iterator 的基础上增加了 6 个方法: 介绍一下新来的几个方法: void hasPrevious ListIterator 有两种获取方式 List.listIterator() List.listIterator(int location) 区别在于第二种可以指定 游标的所在位置。 ListIterator 的具体实现?

    99490发布于 2018-01-05
  • 来自专栏同步博客

    Java 集合系列(四)—— ListIterator 源码分析

    <String> listIterator = list.listIterator(); 7 8 //迭代器位置: add-1 | aaa bbb ccc 9 listIterator.add ccc 26 listIterator.set("bbb-set"); 27 28 // 删除 bbb-set 29 listIterator.remove 首先我们来分析 LinkedList 的 listIterator() 和 listIterator(int index) 方法获取 ListIterator 迭代器过程。 // 获取 ListIterator 迭代器 5 public ListIterator<E> listIterator() { 6 return listIterator( 0); 7 } 8 9 public ListIterator<E> listIterator(final int index) { 10 rangeCheckForAdd

    85720发布于 2019-04-17
  • 来自专栏Java Life

    请你说说Iterator和ListIterator的区别?

    剑指-->Offer 01 Iterator和ListIterator的区别是: 1)Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。 2)Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。 3)ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

    1.2K40发布于 2019-09-16
  • 来自专栏迁移内容

    JDK源码解析之java.util.ListIterator

    ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问。 可以通过调用listIterator()方法产生一个指向List开始处的ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIteratorListIterator只能用于List及其子类型。 ListIterator有add方法,可以向List中添加对象,而Iterator不能。 ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向 都可实现删除操作,但是ListIterator可以实现对象的修改,set()方法可以实现。Iterator仅能遍历,不能修改。

    30410编辑于 2022-12-01
  • 来自专栏Java进阶学习交流

    一篇文章带你了解ListIterator接口

    ListIterator迭代器是Iterator子类,它在父类的基础上添加了一些方法。 对象 ListIterator it =al.listIterator(al.size()); //判断这个对象有没有前一个元素 while(it.hasPrevious 对象 ListIterator it =al.listIterator(al.size()); //判断这个对象有没有前一个元素 while(it.hasPrevious 接口、ListIterator接口void add(Object o)方法、boolean hasPrevious()方法、ListIterator接口Object previous()方法、void 介绍了ListIterator接口的方法通过例子帮助理解。希望大家通过本文的学习,对你有所帮助!

    37520发布于 2021-10-09
  • 来自专栏影子

    ArrayList分析2 :Itr、ListIterator以及SubList中的坑

    一.不论ListIterator还是SubList,均是对ArrayList维护的数组进行操作 首先我得说下ListIterator是什么,ListIterator 与Iterator均是迭代器接口,对应 listIterator = arr.listIterator(); while(listIterator.hasPrevious()){ Object item listIterator = arr.listIterator(); listIterator.next(); listIterator.set("HELLO"); listIterator = arr.listIterator(3); listIterator.previous(); listIterator.set("HELLO listIterator = arr.listIterator(); while (listIterator.hasNext()){ Object item = listIterator.next

    57130编辑于 2022-07-09
  • 来自专栏吾爱乐享

    java之学习集合迭代listiterator的用法及注意事项

    package com.fenxiangbe.collection; import java.util.ArrayList; import java.util.List; import java.util.ListIterator args) { List l = new ArrayList(); l.add(“a”); l.add(“b”); l.add(“world”); l.add(“c”); l.add(“d”); ListIterator li = l.listIterator();//获取迭代器 while(li.hasNext()){//判断集合中是否有元素 System.out.println(li.next());//获取元素并指针向后移动

    1.2K30发布于 2018-07-13
  • 来自专栏技术小屋-未分类

    Java——类集框架:集合输出的详解及应用举例(Iterator迭代、ListIterator、Enumeration、foreach)

    目录 1、Iterator迭代输出接口(核心) 2、ListIterator双向迭代输出(了解) 3、枚举输出:Enumeration 4、foreach输出 集合的四种输出方式:Iterator、ListIterator 2、ListIterator双向迭代输出(了解) 大部分情况下输出操作基本用Iterator,基本只输出一次,若要实现双向迭代,需要使用ListIterator,进行双向迭代操作时,必须先进行由前向后的迭代 ArrayList<String>(); all.add("hello"); all.add("world"); all.add("nice"); ListIterator <String> iterator = all.listIterator(); while (iterator.hasNext()){ String s = iterator.next

    70210编辑于 2022-05-08
  • 来自专栏拭心的安卓进阶之路

    Java 集合深入理解(8):AbstractSequentialList

    需要实现的方法: size() listIterator(),返回一个 ListIterator 你需要实现一个 ListIterator, 实现它的 hasNext(), hasPrevious(), next(), previous(), 还有那几个 获取位置 的方法,这样你就得到一个不可变的 ListIterator 了。 (); } //继承 AbstractList 的 listIterator() public ListIterator<E> listIterator() { return listIterator (0); } //需要实现类实现的方法 public abstract ListIterator<E> listIterator(int index); 2.add(int, E) 添加元素到指定位置 3.addAll(int index, Collection 用获取到的 listIterator 逐个添加集合中的元素,这就要考验 ListIterator.add 方法的实现效率了,总不能每次都后移一位吧

    1.1K60发布于 2018-01-05
  • 来自专栏王也

    Java如何实现List的反转

    接着,我们使用ListIterator来实现反转。ListIterator允许我们以双向方式遍历List,这使得我们可以通过迭代器从List的末尾开始,逐个交换元素。 使用ListIterator进行反转 ListIterator是一个允许双向遍历的迭代器,它提供了在List中前进和后退的能力。使用ListIterator可以有效地反转List中的元素顺序。 解释ListIterator的概念和工作原理 ListIterator继承自Iterator接口,并添加了一些额外的方法,如previous()、hasPrevious()和nextIndex(),这些方法使得 ListIterator可以向后遍历List。 然后,我们使用listIterator()方法创建了一个ListIterator实例,并设置起始位置为List的末尾(list.size())。

    1.5K10编辑于 2024-04-22
  • 来自专栏kwai

    Java集合(三) List子接口

    ListIterator listIterator() 返回此列表元素的列表迭代器(按适当顺序)。 ListIterator listIterator(int index) 从指定位置开始index返回此列表元素的列表迭代器(按适当顺序)。 iterator 和ListIterator的区别 ListIterator 可以在遍历集合时添加,修改和删除。 ListIterator 只用于List和其子类。iterator用于所有单列集合。 ListIterator有更多的功能。 ListIterator li = list.listIterator(); while(li.hasNext()){ System.out.println(li.nextIndex() + ":"

    63660编辑于 2022-01-10
  • 来自专栏关忆北.

    <? extends T>与<? super T>的区别

    ) { for (int i=0; i<srcSize; i++) dest.set(i, src.get(i)); } else { ListIterator super T> di=dest.listIterator(); ListIterator<? extends T> si=src.listIterator(); for (int i=0; i<srcSize; i++) { di.next(); super T> di=dest.listIterator(); ListIterator<? extends T> si=src.listIterator(); for (int i=0; i<srcSize; i++) { di.next();

    1.4K20编辑于 2022-05-05
  • 来自专栏小旋锋的大数据专栏

    设计模式 | 迭代器模式及典型应用

    return new ListItr(0); } public ListIterator<E> listIterator(int index) { if (index 先看 ListIterator 源码 public interface ListIterator<E> extends Iterator<E> { boolean hasNext(); 可以通过调用 listIterator() 方法产生一个指向List开始处的 ListIterator, 还可以调用 listIterator(n) 方法创建一个一开始就指向列表索引为n的元素处的 ListIterator Iterator 和 ListIterator 主要区别概括如下: ListIterator 有 add() 方法,可以向List中添加对象,而 Iterator 不能 ListIterator 和 Iterator <String> listIterator = list.listIterator(); String first = listIterator.next(); listIterator.set

    75120发布于 2019-01-21
  • 来自专栏全栈程序员必看

    JavaSE基础(101) 遍历ArrayList集合的4种方式[通俗易懂]

    ArrayList遍历:取出ArrayList集合中的数据 ①:for循环 ②:增强for循环:foreach ③:Iterator:迭代器 ④:ListIterator:双向迭代器 ex: /** * ArrayList遍历:取出ArrayList集合中的数据 * ①:for循环 * ②:增强for循环:foreach * ③:Iterator:迭代器 * ④:ListIterator listIterator = list.listIterator();//ListIterator:可以遍历集合的双向迭代器 while (listIterator.hasNext()) {//boolean } /*while (listIterator.hasPrevious()) {//boolean hasPrevious():逆向 ==》从右到左依次遍历 判断是否存在前一个元素 System.out.print(listIterator.previous()+" ");//E(Object) previous():获得上一个元素的值 }*/ } } 运行结果图: 发布者

    46220编辑于 2022-09-15
  • 来自专栏C++语法及相关算法详解

    深度剖析C++STL:手持list利剑,破除编程重重难题(下)

    接下来,我们将实现 ListIterator,它内部保存一个指向 ListNode 的指针 _node,并支持以下基本操作: 解引用操作:通过 *it 访问链表节点中的值。 具体代码示例如下: namespace W { template<class T> class ListIterator { typedef ListNode<T> Node =(const ListIterator& other) const { return _node != other. =(const ListIterator& other) const { return _node != other. =(const ListIterator& other) const { return _node != other.

    20010编辑于 2025-11-05
  • 来自专栏拭心的安卓进阶之路

    Java 集合深入理解(6):AbstractList

    ,此时游标位置为 0 ListIterator<E> it = listIterator(); if (o==null) { //向后遍历 while 中我们介绍了 游标 的概念,每次调用 listIterator.next() 方法 游标 都会后移一位,当 listIterator.next() == o 时(即找到我们需要的的元素),游标已经在 ,此时游标在最后一位 ListIterator<E> it = listIterator(size()); if (o==null) { //向前遍历 while 来进行迭代删除 ListIterator<E> it = listIterator(fromIndex); for (int i=0, n=toIndex-fromIndex; i<n (index); //创建一个 匿名内部 ListIterator,指向的还是 父类的 listIterator return new ListIterator<E>() {

    1.1K100发布于 2018-01-05
  • 来自专栏开源部署

    List集合

    <E> listIterator() 注意:用于应对并发修改异常的返回迭代器方法与迭代器 import java.util.*; public class ListDemo02 { public li= c.listIterator(); while (li.hasNext()) { Object object = (Object) li.next(); { System.out.print(li.previous() + " "); } System.out.println(); ListIterator listIterator = c.listIterator(); System.out.println(listIterator.next()); //与hasNext ()相反,往前遍历 System.out.println(listIterator.hasPrevious()); } }

    1.1K10编辑于 2022-09-14
  • 来自专栏后端码匠

    Java集合-Iterator

    Java 还有一个接口ListIterator继承了Iterator接口,ListIterator接口,它表示一个双向迭代器,意味着可以向前和向后迭代元素的迭代器。 : List<String> list = new ArrayList<>(); list.add("Jane"); list.add("Heidi"); list.add("Hannah"); ListIterator <String> listIterator = list.listIterator(); while(listIterator.hasNext()) { System.out.println (listIterator.next()); } while(listIterator.hasPrevious()) { System.out.println(listIterator.previous ()); } 上面可以看到,第一个例子ListIterator向后迭代,第二个例子向前迭代。

    47720发布于 2021-03-16
领券