Enumeration应该算是程序语言里面比较通用的一个类型,在scala中也存在这样的类型, 我们看下Enumeration的定义: abstract class Enumeration (initial a fresh value, part of this enumeration, identified by the * integer `i` It must be * unique amongst all values of the enumeration. It must be * unique amongst all values of the enumeration. println("Step 1: How to create an enumeration") object Donut extends Enumeration { type Donut = Value
热卖云产品年终特惠,2核2G轻量应用服务器7.33元/月起,更多上云必备产品助力您轻松上云
Enumeration类不是一种数据结构,但是它对其他数据结构十分重要 它可以从别的数据结构获得连续的数据元素,比如遍历栈 public static void printStack(stack a) ; return ; }else { Enumeration it = a.elements(); while(it.hasMoreElements() { System.out.printIn(a.nextElement()); } } } 这个类有两个方法 hasMoreElements() 这是检测Enumeration 对象是否还有元素,有则返回true,否则faluse nextElement() 如果Enumeration对象还有元素,该方法得到下一个元素
Net Share Enumeration netshareenum netshareenumall ?
(建议电脑看原文链接,平台的排版不太好,太累了。)描述:在n位的整数中,例如153可以满足1^3 + 5^3 + 3^3 = 153,这样的数称...
Atlassian Jira的/QueryComponentRendererValue!Default.jspa端点可以用于进行用户枚举,如果Jira暴露在公网...
目录 1、Iterator迭代输出接口(核心) 2、ListIterator双向迭代输出(了解) 3、枚举输出:Enumeration 4、foreach输出 集合的四种输出方式:Iterator、ListIterator 、Enumeration、foreach,其中Iterator使用的最多。 ){ String s = iterator.previous(); System.out.println(s); } 3、枚举输出:Enumeration JDK1.0开始提供,其结构定义如下: Enumeration最早是为Vector服务的,只有Vector提供了实例化Enumeration的方法,elements()。 5、总结 1)集合输出首先想到Iterator接口接口; 2)如果在必须的情况下使用Enumeration接口; 作于202003061600,已归档
方案二、 Path Enumeration 路径枚举法,记录下根节点到每个子节点的路径。
value ="Text"></xs:enumeration> <xs:enumeration value ="StoredProcedure"></xs:enumeration value ="ValueType"></xs:enumeration> <xs:enumeration value ="DataSet"></xs:enumeration> <xs:enumeration value ="EntityObject"></xs:enumeration> <xs:enumeration value enumeration value ="SqlServerCe"></xs:enumeration> <xs:enumeration value ="Oracle"></xs:enumeration "></xs:enumeration> <xs:enumeration value ="MySql"></xs:enumeration> <xs:enumeration
先定义一个手机操作系统类型枚举PhoneOsEnum: package club.throwable.enumeration; public enum PhoneOsEnum { /** * extends java.lang.Enum<club.throwable.enumeration.PhoneOsEnum> minor version: 0 major version: 52 $VALUES:[Lclub/throwable/enumeration/PhoneOsEnum; #2 = Methodref #50.#51 // "[Lclub public static club.throwable.enumeration.PhoneOsEnum[] values(); descriptor: ()[Lclub/throwable/enumeration extends java.lang.Enum<club.throwable.enumeration.PhoneOsEnum>,它的父类是java.lang.Enum,父类的泛型就是自身club.throwable.enumeration.PhoneOsEnum
在介绍 Iterator 之前不得不提一下被它替代的 Enumeration< E >: Enumeration< E > ? public interface Enumeration<E> { /** * Returns whether this {@code Enumeration} has more elements Enumeration enumeration = new StringTokenizer("A-B-C", "-"); while (enumeration.hasMoreElements() Enumeration 接口早在 JDK 1.0 时就推出了,当时比较早的容器比如 Hashtable, Vector 都使用它作为遍历工具。 那 Enumeration 为什么会被废弃呢? 它 和 Enumeration 有什么不同呢?
该变量是记录 Enumeration 中正在读去的 InputStream。 Enumeration Enumeration 接口是Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现)。 Enumeration接口只有两个方法。 构造方法 ? 提供两个构造方法。 1、提供 Enumeration 类型的参数。 把传过来的参数赋值给 e 变量。 现在的迭代器都在使用Iterator,而这里为啥还在使用Enumeration 呢? 2、该方法是先判断 Enumeration 中是否有可用的元素,如果获取 Enumeration 迭代器中下一个的元素,并赋值给 in 变量。 read 方法 ?
java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Enumeration ; } } /** * 重写keys方法,返回根据keyList适配的Enumeration,且保持HashTable keys()方法的原有语义 , * 每次都调用返回一个新的Enumeration对象,且和之前的不产生冲突 */ @Override public synchronized Enumeration 的适配器 */ private class EnumerationAdapter<T> implements Enumeration<T> { private //Enumeration的引用,则新Enumeration的hasMoreElements()将返回true,而且之后对HashTable数据的增、删、改都是可以在 //nextElement
3、Java中从以前枚举器Enumeration到迭代器Iterator的适配 从Enumeration到Iterator适配的结构图: ? 对象适配器的举例 java中的枚举到迭代器 */ public class EnumerationIterator implements Iterator<Object> { private Enumeration enumeration; //枚举 : 被适配者 public EnumerationIterator(Enumeration enumeration) { this.enumeration = enumeration; } @Override public boolean hasNext() { return enumeration.hasMoreElements (); //实际调用的是 被适配者 的方法 } @Override public Object next() { return enumeration.nextElement
3、Java中从以前枚举器Enumeration到迭代器Iterator的适配 从Enumeration到Iterator适配的结构图: 一个实例代码:(下面EnumerationIterator就是一个适配器 对象适配器的举例 java中的枚举到迭代器 */ public class EnumerationIterator implements Iterator<Object> { private Enumeration enumeration; //枚举 : 被适配者 public EnumerationIterator(Enumeration enumeration) { this.enumeration = enumeration; } @Override public boolean hasNext() { return enumeration.hasMoreElements (); //实际调用的是 被适配者 的方法 } @Override public Object next() { return enumeration.nextElement
super.fly(); } } 实例:从枚举器到迭代器的适配 package com.java.jikexueyuan.adaptermode.adapter; import java.util.Enumeration enumeration; public EnumerationIterator(Enumeration enumeration) { this.enumeration = enumeration; } @Override public boolean hasNext() { // TODO Auto-generated method stub return enumeration.hasMoreElements(); } @Override public Object next () { // TODO Auto-generated method stub return enumeration.nextElement(); }
他拥有两个构造方法把两个InputStream 或者一个InputStream类型的Enumeration中包含的所有的流连接起来 public SequenceInputStream(Enumeration InputStream s1, InputStream s2) 实现原理 所谓的连接,只是顺序的读取多个流而已 接下来,我们详细看下 内部包含一个in 以及一个Enumerationin用来表示当前的流Enumeration 保存了所有的流 如果构造方法入参为Enumeration直接内部的Enumeration指向参数 如果传递的是两个InputStream创建一个Vector,将这两个流添加到Vector中然后调用Vector 的elements 获得Enumeration 可以看得到,构造方法中都调用了nextStream这个方法他是用来给in赋值的如果是第一次调用,in肯定为null,所以不会进入第一行的if 会从Enumeration nextStream遍历一遍所有的流nextStream方法会把当前的流close掉也就完成了所有的流的关闭 总结 SequenceInputStream的使用比较简单,只需要传递进入两个流或者一个包含流的Enumeration
(),从Iterator到Enumeration的适配。 /** * Returns an enumeration over the specified collection. This provides * interoperability with legacy APIs that require an enumeration * as input. * @return an enumeration over the specified collection. * @see Enumeration */ public static <T> Enumeration<T> enumeration(final Collection<T>
)null); } public EnumerationIterator(Enumeration enumeration) { this(enumeration, (Collection)null); } public EnumerationIterator(Enumeration enumeration, Collection collection) { this.enumeration = enumeration getEnumeration() { return this.enumeration; } public void setEnumeration(Enumeration enumeration) { this.enumeration = enumeration; } } Enumeration 和 Iterator 大家应该都听过 Enumeration算是遗留的老代码了 很显然,我们希望能够使用新世界的 { private Enumeration enumeration; 他实现了Iterator 并且有一个Enumeration 的成员,是 对象适配器 nextElement
现在我们想写一个适配器,让 Vector 也能使用 Iterator 迭代器,即在 Enumeration 和 Iterator 之间做适配。 * 2、Enumeration 是被适配者(Apaptee)角色。 * 3、EnumerationAdapter 是适配者(Adapter)角色。 */ public class EnumerationAdapter implements Iterator { private Enumeration enumeration; public EnumerationAdapter(Enumeration enumeration) { this.enumeration = enumeration; } @Override enumeration = vector.elements(); Iterator iterator = new EnumerationAdapter(enumeration);
扫码关注腾讯云开发者
领取腾讯云代金券