当前位置:网站首页>Listiterator list iterator

Listiterator list iterator

2022-06-13 05:02:00 Jason_ LH1024

Source code analysis :

public interface List<E>{

Iterator<E> iterator();
ListIterator<E> listIterator();
boolean add(E e);
}
public abstract class AbstractList<E>{
int modCount = 0;
}

//ArrayList Inherited a class and implemented an interface 
public class ArrayList<E> extends AbstractList<E> implements List<E>{

    public boolean add(E e) {
            ensureCapacityInternal(size + 1);  // Increments modCount!!
            elementData[size++] = e;
            return true;
        }


         public Iterator<E> iterator() {
            return new Itr();
           }

       private class Itr implements Iterator<E> {

       }

    }
    public ListIterator<E> listIterator() {
            return new ListItr(0);
        }


         private class ListItr extends Itr implements ListIterator<E> {
                ListItr(int index) {
                    super();
                    cursor = index;
                }

                public boolean hasPrevious() {
                    return cursor != 0;
                }

                public int nextIndex() {
                    return cursor;
                }

                public int previousIndex() {
                    return cursor - 1;
                }

                @SuppressWarnings("unchecked")
                public E previous() {
                    checkForComodification();
                    int i = cursor - 1;
                    if (i < 0)
                        throw new NoSuchElementException();
                    Object[] elementData = ArrayList.this.elementData;
                    if (i >= elementData.length)
                        throw new ConcurrentModificationException();
                    cursor = i;
                    return (E) elementData[lastRet = i];
                }

                public void set(E e) {
                    if (lastRet < 0)
                        throw new IllegalStateException();
                    checkForComodification();

                    try {
                        ArrayList.this.set(lastRet, e);
                    } catch (IndexOutOfBoundsException ex) {
                        throw new ConcurrentModificationException();
                    }
                }

                public void add(E e) {
                    checkForComodification();

                    try {
                        int i = cursor;
                        ArrayList.this.add(i, e);
                        cursor = i + 1;
                        lastRet = -1;
                        expectedModCount = modCount; // Assign the actual modified value to the expected modified value 
                    } catch (IndexOutOfBoundsException ex) {
                        throw new ConcurrentModificationException();
                    }
                }
            }

Achieve it :

package com.it04;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListDemo {
    public static void main(String[] args) {

        List<String> list = new ArrayList<>();

        list.add("hello");
        list.add("world");
        list.add("java");


        // adopt list A collection of listIterator() Method to get 
        // List iterator 
        ListIterator<String> lit = list.listIterator();
        // Positive traversal 
        while (lit.hasNext()){
            String s = lit.next();
            System.out.println(s);
        }

        System.out.println("====================");
        // Reverse traversal 
        while (lit.hasPrevious()){
            String s = lit.previous();
            System.out.println(s);
        }



        // Get list iterator method traversal 
     //   ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()){
            String s = lit.next();
            if (s.equals("world")){
           // It's using ListIterator  Of list To use the add method *****
                lit.add(" Simple and honest ");
            }
        }
        System.out.println(list);


    }
}

     // It's using ListIterator Of list To use the add method ***** 

 

原网站

版权声明
本文为[Jason_ LH1024]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202280515588358.html