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 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);
    }

你可能感兴趣的:(java,开发语言,后端)