java 之 迭代器

各个集合迭代器的选择:
    list和数组使用随机访问方式进行迭代(for循环方法)
    Set和Queue迭代器迭代(for-each方式)
    Map使用(entry视图或key视图)

  

package com.gongxy.demo;

import java.util.*;

/**
 * 迭代器(遍历)
 * 一、可迭代标接口(java.lang.Iterable)
 *      Iterator<T> iterator()//返回一个迭代器
 *      实现此接口的类表示可以没迭代的
 * 二、三种迭代器
 * 1)老的迭代器:java.util.Enumeration
 *              hasMoreElements()//是都还有元素
 *              nextElement()//下一个元素
 * 2)新的迭代器:java.util.Iterator
 *              hasNext()//是都还有元素
 *              E next()//下一个元素
 *              void remove()//删除刚获取的元素
 * 3)针对List的迭代器:java.util.ListIterator
 *              //正向遍历
 *              boolean hasNext()//是都还有元素
 *              E next() //下一个元素
 *              int nextIndex()//下一个下标
 *              //逆向遍历
 *
 */
public class IterableTest {
    public static void main(String[] args) {
        listIteratorTest();
    }

    /**
     * HashSet 不保证迭代顺序
     */
    static void iteratorTest(){
        Set<String> set = new HashSet<String>();
        set.add("a");
        set.add("z");
        set.add("c");
        set.add("g");
        Iterator<String> iterator = set.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
            /*
            a
            c
            g
            z
             */
        }
        for (String item:
                set) {
            System.out.println(item);
        }
    }

    /**
     * list常用遍历方式为数组遍历方式,不是使用迭代器,通过下标访问更高效
     */
    static void listIteratorTest(){
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("c");
        list.add("e");
        list.add("b");
        list.add("g");
        //数组方式遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        ListIterator<String> listIterator = list.listIterator();
        //正向
        while(listIterator.hasNext()){
            System.out.println(listIterator.next());
        }
        //反向
        while(listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
        for (String item:
             list) {
            System.out.println(item);
        }
    }
}

  

原文地址:https://www.cnblogs.com/gygtech/p/13538502.html