Java Enumeration接口

Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。

这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。

尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。

下表总结了一些Enumeration声明的方法:

方法描述

boolean hasMoreElements( ) 测试此枚举是否包含更多的元素。

Object nextElement( ) 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。

实例

以下实例演示了Enumeration的使用:

import java.util.Vector;

import java.util.Enumeration;

public class EnumerationTester{

public static void main(String args[]){

Enumeration days;

Vector dayNames = new Vector();

dayNames.add("Sunday");

dayNames.add("Monday");

dayNames.add("Tuesday");

dayNames.add("Wednesday");

dayNames.add("Thursday");

dayNames.add("Friday");

dayNames.add("Saturday");

days = dayNames.elements();

while(days.hasMoreElements()){

System.out.println(days.nextElements);

}

}

}

以上实例编译运行结果如下:

Sunday

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

--------------------------------------------------------------------------------------------------------------------

Java Bitset类

个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。

这是一个传统的类,但它在Java 2中被完全重新设计。

BitSet定义了两个构造方法。

第一个构造方法创建一个默认的对象:

BitSet()

第二个方法允许用户指定初始大小。所有位初始化为0。

BitSet(int size)

BitSet中实现了Cloneable接口中定义的方法如下表所列:

方法描述

void and(BitSet bitSet)

对此目标位 set 和参数位 set 执行逻辑与操作。

void andNot(BitSet bitSet)

清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。

int cardinality( )

返回此 BitSet 中设置为 true 的位数。

void clear( )

将此 BitSet 中的所有位设置为 false。

void clear(int index)

将索引指定处的位设置为 false。

void clear(int startIndex, int endIndex)

将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。

Object clone( )

复制此 BitSet,生成一个与之相等的新 BitSet。

boolean equals(Object bitSet)

将此对象与指定的对象进行比较。

void flip(int index)

将指定索引处的位设置为其当前值的补码。

void flip(int startIndex, int endIndex)

将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的每个位设置为其当前值的补码。

boolean get(int index)

返回指定索引处的位值。

BitSet get(int startIndex, int endIndex)

返回一个新的 BitSet,它由此 BitSet 中从 fromIndex(包括)到 toIndex(不包括)范围内的位组成。

int hashCode( )

返回此位 set 的哈希码值。

boolean intersects(BitSet bitSet)

如果指定的 BitSet 中有设置为 true 的位,并且在此 BitSet 中也将其设置为 true,则返回 ture。

boolean isEmpty( )

如果此 BitSet 中没有包含任何设置为 true 的位,则返回 ture。

int length( )

返回此 BitSet 的"逻辑大小":BitSet 中最高设置位的索引加 1。

int nextClearBit(int startIndex)

返回第一个设置为 false 的位的索引,这发生在指定的起始索引或之后的索引上。

int nextSetBit(int startIndex)

返回第一个设置为 true 的位的索引,这发生在指定的起始索引或之后的索引上。

void or(BitSet bitSet)

对此位 set 和位 set 参数执行逻辑或操作。

void set(int index)

将指定索引处的位设置为 true。

void set(int index, boolean v)

将指定索引处的位设置为指定的值。

void set(int startIndex, int endIndex)

将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 true。

void set(int startIndex, int endIndex, boolean v)

将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为指定的值。

int size( )

返回此 BitSet 表示位值时实际使用空间的位数。

String toString( )

返回此位 set 的字符串表示形式。

void xor(BitSet bitSet)

对此位 set 和位 set 参数执行逻辑异或操作。

实例

下面的程序说明这个数据结构支持的几个方法:

import java.util.BitSet;

public class BitSetDemo{

public static void main(String[] args){

BitSet bits1 = new BitSet(16);

BitSet bits2 = new BitSet(16);

//set some bit

for (int i =0;i<16;i++){

if((i%2) ==0) bits1.set(i);

if((i%5) !=0) bits2.set(i);

}

System.out.println("Initial pattern in bits1: ");

System.out.println(bits1);

System.out.println("\nInitial pattern in bits2: ");

System.out.println(bits2);

// AND bits

bits2.and(bits1);

System.out.println("\nbits2 AND bits1: ");

System.out.println(bits2);

// OR bits

bits2.or(bits1);

System.out.println("\nbits2 OR bits1: ");

System.out.println(bits2);

// XOR bits

bits2.xor(bits1);

System.out.println("\nbits2 XOR bits1: ");

System.out.println(bits2);

}

}

以上实例编译运行结果如下:

Initial pattern in bits1:

{0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2:

{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1:

{2, 4, 6, 8, 12, 14}

bits2 OR bits1:

{0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1:

{}

----------------------------------------------------------------------------------------------------------------------------

Java Vector 类

Vector类实现了一个动态数组。和ArrayList和相似,但是两者是不同的:

Vector是同步访问的。

Vector包含了许多传统的方法,这些方法不属于集合框架。

Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

Vector类支持4种构造方法。

第一种构造方法创建一个默认的向量,默认大小为10:

Vector()

第二种构造方法创建指定大小的向量。

Vector(int size)

第三种构造方法创建指定大小的向量,并且增量用incr指定. 增量表示向量每次增加的元素数目。

Vector(int size,int incr)

第四种构造方法创建一个包含集合c元素的向量:

Vector(Collection c)

除了从父类继承的方法外Vector还定义了部分方法: 略

-------------------------------------------------------------------------------------------------------------------------

Java Stack 类

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

Stack()

除了由Vector定义的所有方法,自己也定义了一些方法:

boolean empty()

测试堆栈是否为空。

Object peek( )

查看堆栈顶部的对象,但不从堆栈中移除它。

Object pop( )

移除堆栈顶部的对象,并作为此函数的值返回该对象。

Object push(Object element)

把项压入堆栈顶部。

int search(Object element)

返回对象在堆栈中的位置,以 1 为基数。

-------------------------------------------------------------------------------------------------------------------

Java Dictionary 类

Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。

给出键和值,你就可以将值存储在Dictionary对象中。一旦该值被存储,就可以通过它的键来获取它。所以和Map一样, Dictionary 也可以作为一个键/值对列表。

Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能。

--------------------------------------------------------------------------------------------------------------------------

Java Map 接口

Map接口中键和值一一映射. 可以通过键来获取值。

给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。

当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.

当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。

当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。

当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。

下面的例子来解释Map的功能

import java.util.*;

public class CollectionsDemo{

public static void main(String[] args){

Map m1 = new HashMap();

m1.put("Zara", "8");

m1.put("Mahnaz", "31");

m1.put("Ayan", "12");

m1.put("Daisy", "14");

System.out.println();

System.out.println(" Map Elements");

System.out.print("\t" + m1);

}

}

以上实例编译运行结果如下:

Map Elements

{Mahnaz=31, Ayan=12, Daisy=14, Zara=8}

------------------------------------------------------------------------------------------------------------------------

Java Hashtable 接口

Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。

然而,Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步。

像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。

然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。

Hashtable定义了四个构造方法。第一个是默认构造方法:

Hashtable()

第二个构造函数创建指定大小的哈希表:

Hashtable(int size)

第三个构造方法创建了一个指定大小的哈希表,并且通过fillRatio指定填充比例。

填充比例必须介于0.0和1.0之间,它决定了哈希表在重新调整大小之前的充满程度:

Hashtable(int size,float fillRatio)

第四个构造方法创建了一个以M中元素为初始化元素的哈希表。

哈希表的容量被设置为M的两倍。

Hashtable(Map m)

Hashtable中除了从Map接口中定义的方法外,还定义了以下方法:

-------------------------------------------------------------------------------------------------------------------------

Java Properties 接口

Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。

Properties 定义如下实例变量.这个变量持有一个Properties对象相关的默认属性列表。

Properties defaults;

Properties类定义了两个构造方法. 第一个构造方法没有默认值。

Properties()

第二个构造方法使用propDefault 作为默认值。两种情况下,属性列表都为空:

Properties(Properties propDefault)

java enumeration接口_20180824-Java Enumeration 接口相关推荐

  1. java list 接口_Java 集合 List接口

    [TOC] List接口 概述有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的 ...

  2. Java实现微信小程序相关接口

    订阅通知 JSONObject body=new JSONObject(); body.set("touser","用户openId"); body.set(& ...

  3. java验证签名_简单API接口签名验证

    前言 后端在写对外的API接口时,一般会对参数进行签名来保证接口的安全性,在设计签名算法的时候,主要考虑的是这几个问题: 1. 请求的来源是否合法 2. 请求参数是否被篡改 3. 请求的唯一性 我们的 ...

  4. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  5. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  6. java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上

    标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class  ...

  7. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  8. Java进阶篇(一)——接口、继承与多态

    前几篇是Java的入门篇,主要是了解一下Java语言的相关知识,从本篇开始是Java的进阶篇,这部分内容可以帮助大家用Java开发一些小型应用程序,或者一些小游戏等等. 本篇的主题是接口.继承与多态, ...

  9. java datetime和date_Java 8时间接口localDateTime和Date的对比

    java8提供了新的时间接口.相对Date,Calendar,个人感觉最大的好处是对时间操作的学习成本很低,比Calendar低. 1. LocalDate,LocalTime,LocalDateTi ...

  10. java实时汇率的接口_eoLinker-API_Shop_汇率查询_API接口_Java调用示例代码

    eoLinker-API Shop 汇率查询 Java调用示例代码 汇率查询 提供汇率转换.单个货币对应的热门货币汇率行情,包括人民币.美元.欧元.英镑等100多种货币的实时汇率查询. 该产品拥有以下 ...

最新文章

  1. 红警1开源放出源码,4K高清重制版登顶Steam畅销榜!网友:青春回来了
  2. 最后期限已至,高通收购恩智浦全剧终!中国一刀切断高通物联网全局梦!
  3. mammary cancer关联规则挖掘详解
  4. 前端学习(1944)vue之电商管理系统电商系统之绘制分类组件的基本结构
  5. 百练4982 踩方格
  6. HDOJ---2546 饭卡[DP01背包问题]
  7. @Autowired作用在普通方法上
  8. 报告PPT--Python程序设计,不仅仅是学习编程(35页)
  9. Internet 的50年口述历史七.摩登时代上
  10. 女性手游市场,金矿还是深坑?
  11. electron 剪贴板 截图_利用 Electron 开发快速截图工具(二)
  12. 语音识别:声学的要素和特征
  13. 新的博客,新的开始。
  14. [雅礼集训]xiz(字符串匹配)
  15. 油管YouTube直播点赞订阅提示PR字幕Mogrt动态图形模板
  16. 匈牙利算法(月老牵线问题)
  17. 跟随器为何要加反馈电阻?
  18. 基于用户的音乐推荐平台
  19. cocos之游戏手柄控制实例
  20. windows7 系统下载

热门文章

  1. Python作为人工智能的未来,已经超越Java高居首位
  2. mysql存储过程执行update_MySQL存储过程实现动态执行SQL
  3. ftpclient读取服务器文件能获得文件名文件大小0_Spring WEB工程整合使用FTP,ftp文本文件解析入库,文件上传下载
  4. nvidia.dali:深度学习加速神器!
  5. QuillBot:又一个值得拥有的论文润色工具
  6. python模拟登陆遇到重定向_python - scrapy模拟登陆知乎出现重定向无法登陆问题
  7. P2241 统计方形(数据加强版)-- 70分 python3实现
  8. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性
  9. python实现模拟按键下拉_利用 Python 实现 Windows 下的鼠标键盘模拟
  10. LinuxQt工作笔记-查看程序工作目录