⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector.java

📁 java源代码 请看看啊 提点宝贵的意见
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * @(#)Vector.java	1.89 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;/** * The <code>Vector</code> class implements a growable array of  * objects. Like an array, it contains components that can be  * accessed using an integer index. However, the size of a  * <code>Vector</code> can grow or shrink as needed to accommodate  * adding and removing items after the <code>Vector</code> has been created.<p> * * Each vector tries to optimize storage management by maintaining a  * <code>capacity</code> and a <code>capacityIncrement</code>. The  * <code>capacity</code> is always at least as large as the vector  * size; it is usually larger because as components are added to the  * vector, the vector's storage increases in chunks the size of  * <code>capacityIncrement</code>. An application can increase the  * capacity of a vector before inserting a large number of  * components; this reduces the amount of incremental reallocation. <p> * * As of the Java 2 platform v1.2, this class has been retrofitted to * implement List, so that it becomes a part of Java's collection framework. * Unlike the new collection implementations, Vector is synchronized.<p> * * The Iterators returned by Vector's iterator and listIterator * methods are <em>fail-fast</em>: if the Vector is structurally modified * at any time after the Iterator is created, in any way except through the * Iterator's own remove or add methods, the Iterator will throw a * ConcurrentModificationException.  Thus, in the face of concurrent * modification, the Iterator fails quickly and cleanly, rather than risking * arbitrary, non-deterministic behavior at an undetermined time in the future. * The Enumerations returned by Vector's elements method are <em>not</em> * fail-fast. * * <p>Note that the fail-fast behavior of an iterator cannot be guaranteed * as it is, generally speaking, impossible to make any hard guarantees in the * presence of unsynchronized concurrent modification.  Fail-fast iterators * throw <tt>ConcurrentModificationException</tt> on a best-effort basis.  * Therefore, it would be wrong to write a program that depended on this * exception for its correctness:  <i>the fail-fast behavior of iterators * should be used only to detect bugs.</i><p> * * This class is a member of the  * <a href="{@docRoot}/../guide/collections/index.html"> * Java Collections Framework</a>. * * @author  Lee Boynton * @author  Jonathan Payne * @version 1.89, 01/23/03 * @see Collection * @see List * @see ArrayList * @see LinkedList * @since   JDK1.0 */public class Vector extends AbstractList        implements List, RandomAccess, Cloneable, java.io.Serializable{    /**     * The array buffer into which the components of the vector are     * stored. The capacity of the vector is the length of this array buffer,      * and is at least large enough to contain all the vector's elements.<p>     *     * Any array elements following the last element in the Vector are null.     *     * @serial     */    protected Object elementData[];    /**     * The number of valid components in this <tt>Vector</tt> object.      * Components <tt>elementData[0]</tt> through      * <tt>elementData[elementCount-1]</tt> are the actual items.     *     * @serial     */    protected int elementCount;    /**     * The amount by which the capacity of the vector is automatically      * incremented when its size becomes greater than its capacity.  If      * the capacity increment is less than or equal to zero, the capacity     * of the vector is doubled each time it needs to grow.     *     * @serial     */    protected int capacityIncrement;    /** use serialVersionUID from JDK 1.0.2 for interoperability */    private static final long serialVersionUID = -2767605614048989439L;    /**     * Constructs an empty vector with the specified initial capacity and     * capacity increment.      *     * @param   initialCapacity     the initial capacity of the vector.     * @param   capacityIncrement   the amount by which the capacity is     *                              increased when the vector overflows.     * @exception IllegalArgumentException if the specified initial capacity     *               is negative     */    public Vector(int initialCapacity, int capacityIncrement) {	super();        if (initialCapacity < 0)            throw new IllegalArgumentException("Illegal Capacity: "+                                               initialCapacity);	this.elementData = new Object[initialCapacity];	this.capacityIncrement = capacityIncrement;    }    /**     * Constructs an empty vector with the specified initial capacity and      * with its capacity increment equal to zero.     *     * @param   initialCapacity   the initial capacity of the vector.     * @exception IllegalArgumentException if the specified initial capacity     *               is negative     */    public Vector(int initialCapacity) {	this(initialCapacity, 0);    }    /**     * Constructs an empty vector so that its internal data array      * has size <tt>10</tt> and its standard capacity increment is      * zero.      */    public Vector() {	this(10);    }    /**     * Constructs a vector containing the elements of the specified     * collection, in the order they are returned by the collection's     * iterator.     *     * @param c the collection whose elements are to be placed into this     *       vector.     * @throws NullPointerException if the specified collection is null.     * @since   1.2     */    public Vector(Collection c) {        elementCount = c.size();        // 10% for growth        elementData = new Object[                      (int)Math.min((elementCount*110L)/100,Integer.MAX_VALUE)];         c.toArray(elementData);    }    /**     * Copies the components of this vector into the specified array. The      * item at index <tt>k</tt> in this vector is copied into component      * <tt>k</tt> of <tt>anArray</tt>. The array must be big enough to hold      * all the objects in this vector, else an      * <tt>IndexOutOfBoundsException</tt> is thrown.     *     * @param   anArray   the array into which the components get copied.     * @throws  NullPointerException if the given array is null.     */    public synchronized void copyInto(Object anArray[]) {	System.arraycopy(elementData, 0, anArray, 0, elementCount);    }    /**     * Trims the capacity of this vector to be the vector's current      * size. If the capacity of this vector is larger than its current      * size, then the capacity is changed to equal the size by replacing      * its internal data array, kept in the field <tt>elementData</tt>,      * with a smaller one. An application can use this operation to      * minimize the storage of a vector.      */    public synchronized void trimToSize() {	modCount++;	int oldCapacity = elementData.length;	if (elementCount < oldCapacity) {	    Object oldData[] = elementData;	    elementData = new Object[elementCount];	    System.arraycopy(oldData, 0, elementData, 0, elementCount);	}    }    /**     * Increases the capacity of this vector, if necessary, to ensure      * that it can hold at least the number of components specified by      * the minimum capacity argument.     *     * <p>If the current capacity of this vector is less than     * <tt>minCapacity</tt>, then its capacity is increased by replacing its     * internal data array, kept in the field <tt>elementData</tt>, with a     * larger one.  The size of the new data array will be the old size plus     * <tt>capacityIncrement</tt>, unless the value of     * <tt>capacityIncrement</tt> is less than or equal to zero, in which case     * the new capacity will be twice the old capacity; but if this new size     * is still smaller than <tt>minCapacity</tt>, then the new capacity will     * be <tt>minCapacity</tt>.     *     * @param minCapacity the desired minimum capacity.     */    public synchronized void ensureCapacity(int minCapacity) {	modCount++;	ensureCapacityHelper(minCapacity);    }        /**     * This implements the unsynchronized semantics of ensureCapacity.     * Synchronized methods in this class can internally call this      * method for ensuring capacity without incurring the cost of an      * extra synchronization.     *     * @see java.util.Vector#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 = new Object[newCapacity];	    System.arraycopy(oldData, 0, elementData, 0, elementCount);	}    }    /**     * Sets the size of this vector. If the new size is greater than the      * current size, new <code>null</code> items are added to the end of      * the vector. If the new size is less than the current size, all      * components at index <code>newSize</code> and greater are discarded.     *     * @param   newSize   the new size of this vector.     * @throws  ArrayIndexOutOfBoundsException if new size is negative.     */    public synchronized void setSize(int newSize) {	modCount++;	if (newSize > elementCount) {	    ensureCapacityHelper(newSize);	} else {	    for (int i = newSize ; i < elementCount ; i++) {		elementData[i] = null;	    }	}	elementCount = newSize;    }    /**     * Returns the current capacity of this vector.     *     * @return  the current capacity (the length of its internal      *          data array, kept in the field <tt>elementData</tt>      *          of this vector).     */    public synchronized int capacity() {	return elementData.length;    }    /**     * Returns the number of components in this vector.     *     * @return  the number of components in this vector.     */    public synchronized int size() {	return elementCount;    }    /**     * Tests if this vector has no components.     *     * @return  <code>true</code> if and only if this vector has      *          no components, that is, its size is zero;     *          <code>false</code> otherwise.     */    public synchronized boolean isEmpty() {	return elementCount == 0;    }    /**     * Returns an enumeration of the components of this vector. The      * returned <tt>Enumeration</tt> object will generate all items in      * this vector. The first item generated is the item at index <tt>0</tt>,      * then the item at index <tt>1</tt>, and so on.      *     * @return  an enumeration of the components of this vector.     * @see     Enumeration     * @see     Iterator     */    public Enumeration elements() {	return new Enumeration() {	    int count = 0;	    public boolean hasMoreElements() {		return count < elementCount;	    }	    public Object nextElement() {		synchronized (Vector.this) {		    if (count < elementCount) {			return elementData[count++];		    }		}		throw new NoSuchElementException("Vector Enumeration");	    }	};    }    /**     * Tests if the specified object is a component in this vector.     *     * @param   elem   an object.     * @return  <code>true</code> if and only if the specified object      * is the same as a component in this vector, as determined by the      * <tt>equals</tt> method; <code>false</code> otherwise.     */    public boolean contains(Object elem) {	return indexOf(elem, 0) >= 0;    }    /**     * Searches for the first occurence of the given argument, testing      * for equality using the <code>equals</code> method.      *     * @param   elem   an object.     * @return  the index of the first occurrence of the argument in this     *          vector, that is, the smallest value <tt>k</tt> such that      *          <tt>elem.equals(elementData[k])</tt> is <tt>true</tt>;      *          returns <code>-1</code> if the object is not found.     * @see     Object#equals(Object)     */    public int indexOf(Object elem) {	return indexOf(elem, 0);    }    /**     * Searches for the first occurence of the given argument, beginning 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -