Java集合之枚举和迭代


在java集合中顶层有这样两个接口Iterator和Enumeration,这两个接口是特殊的数据操作接口。Iterator用于进行数据迭代,称为迭代器;Enumeration用于进行数据枚举,称为枚举。

1.枚举:该接口定义了可以对一个对象类集中的元素进行枚举的方法,但目前已被迭代器所替代。

在枚举中定义了如下两个方法:

    boolean   hasMoreElements():判断集合中是否有元素可提取,有该方法就返回true,否则返回false

    Object  nextElement() :将枚举中的下一个对象作为一个类属Object的引用而返回。也就是每次调用nextElement()方法获得枚举中的下一个对象。

以一个实例举例如下:

 A:创建一个Vector集合

 B:向集合中添加元素

 C:使用vector集合的elements()方法返回集合中元素列表

 D:使用枚举的hasMoreElements()方法判断集合列表中是否存在下一个元素

 E:使用枚举的nexElements()方法打印出集合元素信息。

代码如下:

package yjhou.connection;

import java.util.Enumeration;

import java.util.Vector;

public class VectorTest {

public static void main(String[] args) {

//初始化一个容量大小为10的Vector对象

Vector<String> vector = new  Vector<String>();

//向vector集合中添加元素

vector.add("aa");

vector.add("bb");

vector.add("cc");

vector.add("dd");

//取得Vector中的元素列表

Enumeration<String> en=vector.elements();

//循环判断集合中是否还存在下一个元素

while(en.hasMoreElements()){

//打印出集合中的下一个元素

System.out.println(en.nextElement());

}

}

}


2.迭代:

       迭代器<Iterator>和枚举<Enumeration>的功能差不多,但在集合中推荐使用迭代器来进行跌代。

       迭代器定义了如下三个方法:

boolean hasNext():判断集合中是否有元素可迭代;

E next():返回迭代的下一个元素;

Void remove():移除迭代器返回的最后一个元素。

举例如下:

   逻辑同上:

 

package yjhou.connection;


import java.util.Iterator;

import java.util.Vector;

public class VectorTest {

public static void main(String[] args) {

//初始化一个容量大小为10的Vector对象

Vector<String> vector = new  Vector<String>();

//向vector集合中添加元素

vector.add("aa");

vector.add("bb");

vector.add("cc");

vector.add("dd");

Iterator<String> itr = vector.iterator();//取得元素列表

while(itr.hasNext()){

String str = itr.next();

System.out.println(str);

}

}

}

迭代器与枚举之间的差异:

A:枚举接口其实是一个比迭代器接口更早期的枚举集合中的元素的接口;

B:枚举虽然过时而被Iterator替代,但Servlet还用到

C:迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移    除元素

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值