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,双链表实现了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);
    }
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023-8-13胖胖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值