• Java-Enumeration ( 枚举类)


    Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和Hashtable类型集合元素的功能,不支持元素的移除操作。
     
    Java8中Enumeration接口的源码:
    package java.util;
    public interface Enumeration<E> {
    /**
         * Tests if this enumeration contains more elements.
         *
         * @return  <code>true</code> if and only if this enumeration object
         *           contains at least one more element to provide;
         *          <code>false</code> otherwise.
         */
    boolean hasMoreElements();//判断是否包含元素
    
    /**
         * Returns the next element of this enumeration if this enumeration
         * object has at least one more element to provide.
         *
         * @return     the next element of this enumeration.
         * @exception  NoSuchElementException  if no more elements exist.
         */
    E nextElement();//获得下一个元素
    }
    通过Enumeration的源码分析可得,Enumeration有两个方法:
    (1)boolean hasMoreElements();//是否还有元素,如果有返回true,否则表示至少含有一个元素
    (2)E nextElement();//如果Enumeration枚举对象还有元素,返回对象只能的下一个元素,否则抛出NoSuchElementException异常。
     
    简单示例:
    package com.dxz.jdk.enumtest;
    
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.Vector;
    
    public class TestEnumeration {
        public static void main(String[] args) {
            Vector v = new Vector();
            v.addElement("Lisa");
            v.addElement("Billy");
            v.addElement("Mr Brown");
            Enumeration e = v.elements();// 返回Enumeration对象
            while (e.hasMoreElements()) {
                String value = (String) e.nextElement();// 调用nextElement方法获得元素
                System.out.println(value);
            }
            System.out.println();
            Hashtable ht = new Hashtable();
            ht.put("a", "1");
            ht.put("b", "2");
            ht.put("c", "3");
            Enumeration elements = ht.elements();
            while (elements.hasMoreElements()) {
                String value = (String) elements.nextElement();// 调用nextElement方法获得元素
                System.out.println(value);
            }
        }
    }

    结果:

    Lisa
    Billy
    Mr Brown
    
    2
    1
    3

    sun下的CompoundEnumeration

    package sun.misc;
    
    import java.util.Enumeration;
    import java.util.NoSuchElementException;
    
    /*
     * A useful utility class that will enumerate over an array of
     * enumerations.
     */
    public class CompoundEnumeration<E> implements Enumeration<E> {
        private Enumeration<E>[] enums;
        private int index = 0;
    
        public CompoundEnumeration(Enumeration<E>[] enums) {
            this.enums = enums;
        }
    
        private boolean next() {
            while (index < enums.length) {
                if (enums[index] != null && enums[index].hasMoreElements()) {
                    return true;
                }
                index++;
            }
            return false;
        }
    
        public boolean hasMoreElements() {
            return next();
        }
    
        public E nextElement() {
            if (!next()) {
                throw new NoSuchElementException();
            }
            return enums[index].nextElement();
        }
    }

    查看sun.misc下的代码:

    • 下载对应的 openJDK,我这里下载的是 jdk-jdk8-b120.zip

    • 把系统 JDK 路径中 src 备份,复制一份到桌面进行解压

    • 把 jdk-jdk8-b120.zip 中的 jdk-jdk8-b120jdksrcshareclassessun 复制到桌面中 src 中

     

     
  • 相关阅读:
    Pandas数据分析 (三)
    Pandas数据分析 (二)
    Pandas数据分析 (一)
    Django后台应用管理名称修改
    Jupyter Notebooks 配置
    Hadoop完全分布式搭建流程
    Java学习笔记(五)
    微信小程序学习笔记(一)
    redis windows版安装
    Linux计划任务
  • 原文地址:https://www.cnblogs.com/duanxz/p/15045940.html
Copyright © 2020-2023  润新知