Enumeration与Iterator接口

Enumeration接口

HashTable和Vector中的元素遍历都是用的Enumeration接口实现的。

hasMoreElements();//判断Enumeration中是否还有元素

nextElement();//返回下一个元素

 

Iterator 接口

An iterator over a collection. Iterator takes the place of Enumeration in the Java Collections Framework. Iterators differ from enumerations in two ways:

  • Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics.
  • Method names have been improved.
  • 前者是“fail-fast”的——fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件;
  • 前者可以配合Iterable<E>接口用于Java 5的for-each循环中。
  • Iterator适用于边界未知的场景,Enumeration的边界是已知且可枚举的。而且这是两个作用不同的东西。

方法:

hasNext();
next();
remove();
forEachRemaining(Consumer<? super E> action);

最后一个方法相当与给集合的每个元素执行:

while (hasNext())

action.accept(next());

ListIterator接口

继承自Iterator 接口,但新增了几个方法

An iterator for lists that allows the programmer to traverse the list in either direction, modify the list during iteration, and obtain the iterator‘s current position in the list. A ListIterator has no current element; its cursor position always lies between the element that would be returned by a call to previous() and the element that would be returned by a call to next(). An iterator for a list of length n has n+1 possible cursor positions, as illustrated by the carets (^) below:

    Element(0)   Element(1)   Element(2)   ... Element(n-1)

cursor positions:      ^              ^              ^              ^                    ^

void hasPrevious();//判断游标前面是否有元素;

Object previous();//返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;

int nextIndex();//返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;

int previousIndex();//返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;

void add(E);//在游标前面插入一个元素

void set(E);//更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会抛 java.lang.IllegalStateException ;

注意:remove()和set(Object)方法不是根据游标的位置来操作的,他们被定义成操作由next() 或 previous()调用返回的最后一个元素。

原文地址:https://www.cnblogs.com/SleepyDot/p/8733584.html

时间: 2024-11-08 23:59:39

Enumeration与Iterator接口的相关文章

Enumeration与Iterator的对比

Enumeration 接口 Iterator 接口 参数的含义 枚举类型 迭代器元素类型 所在包 java.util 父类 无 子类 StringTokenizer BeanContextSupport.BCSIterator, EventReaderDelegate, Scanner 区别 实现 Enumeration 接口的对象, 它生成一系列元素,一次生成一 个.连续调用nextElement 方法将 返回一系列的连续元素. 迭代器 方法 判断是否有下一个元素 hasMoreElemen

Comparable、Iterator接口和Collections类的实现方法

Comparable接口: 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法. 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序. 方法:int compareTo(T o) 比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数. Collections类: List的常用算法: ArrayList默认长度(siz

Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)

public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry<Object, Object>> entries = map.entrySet(); // 遍历 for (Map.Entry<Object, Object> entry : entries) { Object key = entry.getKey(); Object val = e

Collection接口与Iterator接口

Collection接口的实现类跟Vector相似.要从实现了Collection接口的类的实例中取出保存在其中的元素对象,必须通过Collection接口的Iterator()方法,返回一个Iterator接口. Iterator接口与Enumeration接口非常相似.该接口的优点是其中的方法名比较简短. Arraylist类实现了Collection接口 例:将上例改写为用ArrayList类和Iterator接口来实现. import java.util.*; public class

Iterator接口。集合输出

在集合中支持以下几种方式. iterator ListIterator foreach输出 emumeration输出. 集合输出的标准操作: 集合输出的时候必须形成以下的思路:只要碰到了集合输出的操作,就一定使用iterator接口,这是最重要的标准. iterator接口的操作原理: iterator是专门的迭代输出接口,所谓的迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容,则把内容输出. 对于iterator而言,其本身是一个借口,所以要想实例化,需要必须依靠collect

一大波Java来袭(六)——Java集合之Collection和Iterator接口

本文主要介绍Collection和Iterator接口. 一.Collection和Iterator接口 Collection接口是List.Set..Queue的父接口. Collection  c = new ArrayList(); 父类指向子类对象!优点:多态.动态链接.向上转型. 面向接口编程,被调用者对于调用者是完全透明的,可以随意替换子类,屏蔽了子类特有的东西. Demo:详细请参加:Java API文档 二.如何依次遍历集合中的元素? 普通情况下,当我们把一个对象"丢进"

Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 排序操作: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(Li

Iterator接口

所有实现了Collection接口的容易类都有一个iterator方法用以返回一个实现Iterator接口的对象. Iterator对象称作迭代器,用以方便实现对容器内元素的遍历操作. Iterator接口定义了如下方法: boolean hasNext(): //判断游标左边是否有元素 object next(); //返回游标右边的元素并将游标移动到下一个位置 void remove(): // 删除游标左边的元素,执行完next之后该操作只能操作一次

java中的Iterator接口

Iterator接口 Iterator接口也是Java集合框架的成员,但它与Collection系列.Map系列的集合不一样:Collection系列集合.Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器. Iterator接口里定义了如下4个方法: –boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true. –Object next():返回集合里下一个元素. –