枚举类Enumeration的使用以及与iterator的区别

ps:iterator和枚举类的区别

1.iterator多了一个删除元素的api

2.其次在定义名称上貌似改进了些

下面是转载的枚举类使用:

Enumeration


Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。

Enumeration接口定义了从一个数据结构得到连续数据的手段。

例如,Enumeration定义了一个名为nextElement的方法,可以用来从含有多个元素的数据结构中得到的下一个元素。 Enumeration接口提供了一套标准的方法,由于Enumeration是一个接口,它的角色局限于为数据结构提供方法协议。

Enumertion接口中仅定义了下面两个方法:

boolean hasMoreElemerts() 测试Enumeration枚举对象中是否还含有元素,如果返回true,则表示还含有至少一个的元素。 ·

Object nextElement() 如果Bnumeration枚举对象还含有元素,该方法得到对象中的下一个元素。


Enumeration是个接口,不是类,再次,这个东西就是为了实现遍历的,现在已经被迭代器Iterator取代了

例1:

MyDataSttuct.java

[java] view plain copy
  1. packagecn.run.zuoye_3;
  2. importjava.util.Enumeration;
  3. publicclassMyDataSttuct{
  4. String[]data;
  5. //构造器
  6. publicMyDataSttuct(){
  7. data=newString[4];
  8. data[0]="zero";
  9. data[1]="one";
  10. data[2]="two";
  11. data[3]="three";
  12. }
  13. //返回一个enumeration对象给使用程序
  14. EnumerationgetEnum(){
  15. returnnewMyEnumerator(0,data.length,data);
  16. }
  17. }

MyEnumerator.java

[java] view plain copy
  1. packagecn.run.zuoye_3;
  2. importjava.util.Enumeration;
  3. classMyEnumeratorimplementsEnumeration
  4. {
  5. intcount;//计数器
  6. intlength;//存储的数组的长度
  7. Object[]dataArray;//存储数据数组的引用
  8. //构造器
  9. publicMyEnumerator(intcount,intlength,Object[]dataArray){
  10. this.count=count;
  11. this.length=length;
  12. this.dataArray=dataArray;
  13. }
  14. publicbooleanhasMoreElements(){
  15. return(count<length);
  16. }
  17. publicObjectnextElement(){
  18. returndataArray[count++];
  19. }
  20. }

DemoEnumeration.java

[java] view plain copy
  1. packagecn.run.zuoye_3;
  2. importjava.util.*;
  3. classDemoEnumeration{
  4. publicstaticvoidmain(String[]args){
  5. //实例化MyDataStruct类型的对象
  6. MyDataSttuctmySataStruct=newMyDataSttuct();
  7. //得到描述myDataStruct类型对象的enumeration对象
  8. Enumeration<MyDataSttuct>myEnumeration=mySataStruct.getEnum();
  9. System.out.println(myEnumeration);
  10. //使用对象循环显示myDataStruct类型的对象中的每一个元素
  11. while(myEnumeration.hasMoreElements())
  12. System.out.println(myEnumeration.nextElement());
  13. }
  14. }

例2:
[java] view plain copy
  1. packagecn.run.zuoye_3;
  2. importjava.util.Enumeration;
  3. importjava.util.Properties;
  4. publicclassPropertiesTest{
  5. publicstaticvoidmain(String[]args){
  6. //获取系统属性文件中的键值对
  7. Propertiespro=System.getProperties();
  8. //把属性文件中的值放入枚举中+泛型
  9. //Enumerationenu=pro.propertyNames();
  10. Enumerationenu=pro.keys();
  11. //遍历枚举
  12. while(enu.hasMoreElements()){
  13. //获取枚举中的键
  14. Stringkeys=(String)enu.nextElement();
  15. //通过键得到对应的值
  16. Stringvalues=(String)pro.get(keys);
  17. System.out.println("系统属性文件中的数据是:【"+keys+"="+values+"】");
  18. }
  19. }
  20. }
文章地址:http://blog.csdn.net/wangbaoyin/article/details/7561233
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值