zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
    

      

  • 相关阅读:
    造轮子杂记2
    Net分布式系统之五:微服务架构
    C#设计模式:责任链模式
    NET Core1.0之CentOS平台开发控制台程序DEMO
    WCF Routing 服务
    设计模式之外观模式
    设计模式之简单工厂模式
    Eclipse快捷键总结
    Spring容器的初始化流程
    IOC容器的创建
  • 原文地址:https://www.cnblogs.com/gygtech/p/13538502.html
Copyright © 2011-2022 走看看