iterator的基本用法

 1.iterator輸出java

package com.iterator.demo;

import java.util.Iterator;
import java.util.Set;

public class IteratorDemo {
    public static void main(String[] args) {
        Set<String> all = Set.of("Hello", "world","sina","sohu");
        Iterator<String> iter = all.iterator();
        while (iter.hasNext()) {
            String string = iter.next();
            System.out.println(string);
        }
    }
}

 運行結果:併發

world
hello
sina
sohu

 

2.remove()刪除當前元素spa

package com.iterator.demo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class IteratorDemo {
    public static void main(String[] args) {
        Set<String> all = new HashSet<String>();
        all.add("hello");
        all.add("world");
        all.add("sina");
        all.add("sohu");
        Iterator<String> iter = all.iterator();
        while (iter.hasNext()) {
            String string = iter.next();
            System.out.println(string);
            if("world".equals(string)) {
                iter.remove();//刪除當前的數據
            }
        }
        System.out.println(all);
    }
}

運行結果:code

world
hello
sina
sohu
[world, hello, sina, sohu]

 

3.若是使用Collection中的remove()方法,則會報併發修改異常。blog

package com.iterator.demo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class IteratorDemo {
    public static void main(String[] args) {
        Set<String> all = new HashSet<String>();
        all.add("hello");
        all.add("world");
        all.add("sina");
        all.add("sohu");
        Iterator<String> iter = all.iterator();
        while (iter.hasNext()) {
            String string = iter.next();
            System.out.println(string);
            all.remove("world");//刪除當前的數據
        }
        System.out.println(all);
    }
}

運行結果:rem

world
Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1490)
    at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1513)
    at com.iterator.demo.IteratorDemo.main(IteratorDemo.java:16)

因此,必須使用iterator提供的remove()方法來刪除,可是不是必須的狀況下,咱們不多使用iterator的remove()方法。string

 

4.ListIterator雙向迭代it

  若是想實現由後向前的遍歷,那麼首先要實現由前向後遍歷。io

package com.iterator.demo;

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

public class IteratorDemo {
    public static void main(String[] args) {
        List<String> all = new ArrayList<String>();
        all.add("hello");
        all.add("world");
        all.add("sina");
        all.add("sohu");
        ListIterator<String> iter = all.listIterator();
        System.out.print("由前向後遍歷:");
        while (iter.hasNext()) {
            System.out.print(iter.next()+"、");
        }
        System.out.print("\n由後向前遍歷:");
        while (iter.hasPrevious()) {
            System.out.print(iter.previous()+"、");
        }
    }
}

運行結果:class

由前向後遍歷:hello、world、sina、sohu、
由後向前遍歷:sohu、sina、world、hello、
相關文章
相關標籤/搜索