黑马程序员_日记36_JavaVector和Enumeration

 ——- android培训java培训、期待与您交流! ———-

查阅API,得到Vector的基本信息。

public class Vector
extends AbstractList
implements List, RandomAccess, Cloneable, Serializable
Vector 类可以实现可增长的对象数组。
与数组一样,它包含可以使用整数索引进行访问的组件。
但是,Vector 的大小可以根据需要增大或缩小,
以适应创建 Vector 后进行添加或移除项的操作。

为什么Vector使用枚举而不是迭代器??

由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的:
如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),
则迭代器将抛出 ConcurrentModificationException。
因此,面对并发的修改,迭代器很快就完全失败,
而不是冒着在将来不确定的时间任意发生不确定行为的风险。
Vector 的 elements 方法返回的 Enumeration 不是 快速失败的。

注意,迭代器的快速失败行为不能得到保证,一般来说,
存在不同步的并发修改时,不可能作出任何坚决的保证。
快速失败迭代器尽最大努力抛出 ConcurrentModificationException。
因此,编写依赖于此异常的程序的方式是错误的,
正确做法是:迭代器的快速失败行为应该仅用于检测 bug。

从 Java 2 平台 v1.2 开始,此类改进为可以实现 List 接口,
使它成为 Java Collections Framework 的成员。
与新 collection 实现不同,Vector 是同步的。

而枚举是怎么样的呢?

接口 Enumeration
实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。
连续调用 nextElement 方法将返回一系列的连续元素。

注:此接口的功能与 Iterator 接口的功能是重复的。
此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。
新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。

枚举只有2个方法:
hasMoreElements()测试此枚举是否包含更多的元素。
类似于hasNext().
nextElement()如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
类似于next()

Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
枚举就是Vector特有的取出方式。
发现枚举和迭代器很像。
其实枚举和迭代是一样的。

因为枚举的名称以及方法的名称都过长。
所以被迭代器取代了。
枚举郁郁而终了。

下面测试一下vector和枚举

import java.util.*;
class VectorDemo 
{
    public static void main(String[] args) 
    {
        vectorEnumeration();
    }

    //测试Vector和枚举
    public static void vectorEnumeration()
    {
        //创建一个向量
        Vector v = new Vector();

        //给向量添加元素
        v.add("num01");
        v.add("num02");
        v.add("num03");
        v.add("num04");

        //创建枚举,类似于迭代器,使用枚举而不使用迭代器的原因上面已经解释过了
        Enumeration en = v.elements();

        //类似于迭代器,取出向量元素
        while(en.hasMoreElements())
            System.out.println(en.nextElement());
    }

}

Vector和Enumeration演示结果
演示结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值