`

Java集合工具类之List - Vector & Stack

阅读更多

 

3. List

3.1 Vector

1 Vector 的数据结构和工作原理

Vector 是基本数据结构一个可变数组,数组的元素可以是任意对象,当 Vector 初始创建时,会创建一个一定容量(Capacity)的(默认为 10 )数组对象,当添加的对象超过数组的容量时, Vector 在内部会重新创建一个新的数组,再把原数组元素拷贝到新的数组里面,这样就完成了动态数组的功能。 Vector 的构造器有三种

1) public Vector(int initialCapacity, int capacityIncrement)

initialCapacity 是数组的初始化长度, capacityIncrement 是当数组长度超过原长度时,数组长度增长的步长, capacityIncrement 0 时,此种情况当数组长度超过原长度峰值时,此时数组长度变为原来的 2 倍。当数组长度变化,原有的数据和新的数组对象是通过 copy 来完成的。

2) public Vector(int initialCapacity)

3) public Vector()

Vector 默认构造器的数组的长度是 10

 

 

核心方法:

/**

     * 核心方法之一:保证数组的容量,如果没有指定容量的增长的步长,则将原数组容量扩 * 大成原来的两倍,如果指定则按照增长的步长增加容量,并且取 minCapacity *newCapacity 计算出来的最大值进行取值。计算出来的最终容量将作为新数组对象的尺 * 寸,并将原来数组的元素 copy 到新数组里面来。

     *

     * @see #ensureCapacity(int)

     */

    private void ensureCapacityHelper( int minCapacity) {

    int oldCapacity = elementData . length ;

    if (minCapacity > oldCapacity) {

        Object[] oldData = elementData ;

        int newCapacity = ( capacityIncrement > 0) ?

       (oldCapacity + capacityIncrement ) : (oldCapacity * 2);

         if (newCapacity < minCapacity) {

       newCapacity = minCapacity;

        }

            elementData = Arrays.copyOf ( elementData , newCapacity);

    }

    }

 

2.Vector 使用时需要注意的问题

1) Vector 使用时,最好能够预期需要存放元素的个数,这样可以避免数组长度频繁的改变而引起数据的 copy 带来的开销,同时会引起内存大小的增加。

2 )使用 Vector 需要知道 Vector 是线程安全的。因此,在使用时,最好是考虑这个对象会不会因为多个线程访问该 Vector 对象,如果确认只有单个线程访问,则可以用 ArrayList 来代替 Vector

 

 

3.    Stack

Vector 可以轻松改造成 Stack ,栈的特点是先进后出,对于一个栈来说,主要方法包括, push(E e), pop, peek,empty search(E e).

public class Stack <E> extends Vector<E> {

   

    public Stack(){

       super (10);

    }

   

    public void push(E e){

       this .add(e);

    }

   

    public E pop(){

       return this .remove( this .size()-1);

    }

   

    public boolean empty(){

       return this .size()==0;

    }

   

    public int search(E e){
        for (int i = 0; i < this.size(); i++) {
            if(this.elementAt(i).equals(e)){
                return i;
            }else{
                continue;
            }
        }
       
        return -1;
    }

}

分享到:
评论

相关推荐

    精通java集合框架--List,Set..

    - `Vector`和`Stack`:这两个类是历史遗留下来的,现在一般建议使用`ArrayList`和`LinkedList`。 - **`Map`接口的实现**: - `HashMap`:基于哈希表的实现,提供了快速的键值对存储和检索。 - `TreeMap`:基于...

    Java集合类详解总结

    Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`Deque`、`Map`等接口和它们的具体实现类如`ArrayList`、`LinkedList`、`Vector`、`Stack`、`HashSet`、`HashMap`等。下面将对这些核心概念和类进行深入...

    Java集合框架总结

    `Collection`接口是最基础的接口之一,它是所有其他集合类的父接口。它定义了一些基本的操作方法,比如增加、删除元素等。 - **方法概述** - `boolean add(Object o)`:向集合中添加一个元素。 - `boolean remove...

    2020老杜最新Java零基础进阶视频教程-集合课件

    集合框架还包含了一些辅助类,如Collections工具类,提供了集合的静态方法,如排序(sort)、填充(fill)和集合转换(toArray)等。Comparable和Comparator接口用于元素的比较,Comparable是元素自身比较,Comparator则...

    Java集合框架使用总结

    通过以上总结,我们可以看到Java集合框架为Java开发者提供了极其丰富的工具箱,无论是处理简单的数据结构还是复杂的键值对映射,都有合适的选择。了解并熟练掌握这些概念和技术,对于提高编程效率和编写高质量的Java...

    java集合类详解

    在Java编程中,集合类(Collections)是处理数据的重要工具,它们提供了灵活且高效的方式来存储、检索以及操作数据。Java集合框架主要包括两大类:`Collection`和`Map`。 #### Collection接口及其子接口 `...

    java实用工具类

    在Java编程中,`java.util`包是一个非常重要的工具类库,它包含了处理各种常见任务的类和接口。这个包提供了丰富的数据结构和算法,如日期和时间...理解和熟练使用这些工具类对于任何Java开发者来说都是至关重要的。

    java集合的介绍很全

    在Java编程语言中,集合框架(Collection Framework)是处理数据结构的核心组件之一,它为开发人员提供了各种灵活且功能丰富的容器类,用于存储、检索和操作对象。Java集合框架由多个接口和实现这些接口的类组成,...

    JavaSE专题-List集合.doc

    Java集合框架是Java API的核心组件之一,主要用于存储和操作对象。List集合是其中的一个重要接口,它代表了一个有序的、允许元素重复的序列。List接口扩展了Collection接口,提供了更丰富的操作方法,使得在处理序列...

    集合 Collection

    Java集合框架与原有的数据结构(如`Dictionary`、`Vector`、`Stack`和`Properties`等)进行了良好的兼容,同时引入的新特性也为开发者提供了更加强大和灵活的工具。 #### 八、总结 Java集合框架为Java程序员提供了...

    JAVA中的集合和js中集合

    在现代编程语言中,集合框架是处理数据的重要工具之一,尤其是在面向对象的语言中,如Java。本文将详细介绍Java中的集合系统,并简要提及JavaScript中的集合概念,帮助读者理解这两种语言中集合的不同之处。 ### ...

    Java核心知识体系6:集合框架详解.pdf

    5. **Arrays和Collections工具类** - **Arrays**:提供对数组的各种操作,如排序、复制、填充和转换为列表。 - **Collections**:针对集合的各种操作,如排序、填充、反转和同步化。 集合框架的设计使得开发者...

    JAVA集合类的一些总结

    此外,Java集合框架还包括其他接口和类,如`Map`接口(`HashMap`、`TreeMap`、`LinkedHashMap`等实现)、`Queue`(`LinkedList`实现`Deque`,以及`PriorityQueue`等)、`Stack`(`Vector`的子类,实现后进先出的栈...

    JAVA集合框架1.pdf

    二、工具类 java.util.Collections类提供了许多静态方法,用于操作集合对象,如排序、反转、随机排列和搜索等。例如: - sort(List l):对List中的元素进行排序。 - shuffle(List l):将List中的元素随机排列。 - ...

    Java 后端资源:Java 集合框架.docx

    在Java 2发布之前,Java提供了诸如`Dictionary`, `Vector`, `Stack`, 和`Properties`等特设类来存储和操作对象组。这些类虽然有用,但缺乏一个统一的核心主题,导致使用方式各异。为了解决这一问题,Java集合框架...

    全面接触java集合框架(word版)

    7. **实用工具类** `Collections` 类提供了大量静态方法,用于集合的排序、复制、查找、填充等操作。`Arrays` 类则提供了对数组的各种操作,包括排序和转换为集合。 8. **接口的扩展** `Iterable` 接口在Java 5中...

    Java期末复习-类集框架

    9. **Collections工具类** - `Collections`类提供了静态方法,用于操作集合,如排序、查找、填充、复制等。 10. **Comparable接口和equals()、hashCode()方法** - `Comparable`接口用于实现对象的自然排序,`...

Global site tag (gtag.js) - Google Analytics