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

📄 vector.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  /**   * Adds an element to the Vector at the end of the Vector.  The vector   * is increased by ensureCapacity(size() + 1) if needed.   *   * @param obj the object to add to the Vector   */  public synchronized void addElement(Object obj)  {    if (elementCount == elementData.length)      ensureCapacity(elementCount + 1);    modCount++;    elementData[elementCount++] = obj;  }  /**   * Removes the first (the lowestindex) occurance of the given object from   * the Vector. If such a remove was performed (the object was found), true   * is returned. If there was no such object, false is returned.   *   * @param obj the object to remove from the Vector   * @return true if the Object was in the Vector, false otherwise   * @see #remove(Object)   */  public synchronized boolean removeElement(Object obj)  {    int idx = indexOf(obj, 0);    if (idx >= 0)      {        remove(idx);        return true;      }    return false;  }  /**   * Removes all elements from the Vector.  Note that this does not   * resize the internal data array.   *   * @see #clear()   */  public synchronized void removeAllElements()  {    if (elementCount == 0)      return;    modCount++;    Arrays.fill(elementData, 0, elementCount, null);    elementCount = 0;  }  /**   * Creates a new Vector with the same contents as this one. The clone is   * shallow; elements are not cloned.   *   * @return the clone of this vector   */  public synchronized Object clone()  {    try      {        Vector clone = (Vector) super.clone();        clone.elementData = (Object[]) elementData.clone();        return clone;      }    catch (CloneNotSupportedException ex)      {        // Impossible to get here.        throw new InternalError(ex.toString());      }  }  /**   * Returns an Object array with the contents of this Vector, in the order   * they are stored within this Vector.  Note that the Object array returned   * is not the internal data array, and that it holds only the elements   * within the Vector.  This is similar to creating a new Object[] with the   * size of this Vector, then calling Vector.copyInto(yourArray).   *   * @return an Object[] containing the contents of this Vector in order   * @since 1.2   */  public synchronized Object[] toArray()  {    Object[] newArray = new Object[elementCount];    copyInto(newArray);    return newArray;  }  /**   * Returns an array containing the contents of this Vector.   * If the provided array is large enough, the contents are copied   * into that array, and a null is placed in the position size().   * In this manner, you can obtain the size of a Vector by the position   * of the null element, if you know the vector does not itself contain   * null entries.  If the array is not large enough, reflection is used   * to create a bigger one of the same runtime type.   *   * @param a an array to copy the Vector into if large enough   * @return an array with the contents of this Vector in order   * @throws ArrayStoreException the runtime type of the provided array   *         cannot hold the elements of the Vector   * @throws NullPointerException if <code>a</code> is null   * @since 1.2   */  public synchronized Object[] toArray(Object[] a)  {    if (a.length < elementCount)      a = (Object[]) Array.newInstance(a.getClass().getComponentType(),                                       elementCount);    else if (a.length > elementCount)      a[elementCount] = null;    System.arraycopy(elementData, 0, a, 0, elementCount);    return a;  }  /**   * Returns the element at position <code>index</code>.   *   * @param index the position from which an element will be retrieved   * @return the element at that position   * @throws ArrayIndexOutOfBoundsException index &lt; 0 || index &gt;= size()   * @since 1.2   */  public Object get(int index)  {    return elementAt(index);  }  /**   * Puts <code>element</code> into the Vector at position <code>index</code>   * and returns the Object that previously occupied that position.   *   * @param index the index within the Vector to place the Object   * @param element the Object to store in the Vector   * @return the previous object at the specified index   * @throws ArrayIndexOutOfBoundsException index &lt; 0 || index &gt;= size()   * @since 1.2   */  public synchronized Object set(int index, Object element)  {    checkBoundExclusive(index);    Object temp = elementData[index];    elementData[index] = element;    return temp;  }  /**   * Adds an object to the Vector.   *   * @param o the element to add to the Vector   * @return true, as specified by List   * @since 1.2   */  public boolean add(Object o)  {    addElement(o);    return true;  }  /**   * Removes the given Object from the Vector.  If it exists, true   * is returned, if not, false is returned.   *   * @param o the object to remove from the Vector   * @return true if the Object existed in the Vector, false otherwise   * @since 1.2   */  public boolean remove(Object o)  {    return removeElement(o);  }  /**   * Adds an object at the specified index.  Elements at or above   * index are shifted up one position.   *   * @param index the index at which to add the element   * @param element the element to add to the Vector   * @throws ArrayIndexOutOfBoundsException index &lt; 0 || index &gt; size()   * @since 1.2   */  public void add(int index, Object element)  {    insertElementAt(element, index);  }  /**   * Removes the element at the specified index, and returns it.   *   * @param index the position from which to remove the element   * @return the object removed   * @throws ArrayIndexOutOfBoundsException index &lt; 0 || index &gt;= size()   * @since 1.2   */  public synchronized Object remove(int index)  {    checkBoundExclusive(index);    Object temp = elementData[index];    modCount++;    elementCount--;    if (index < elementCount)      System.arraycopy(elementData, index + 1, elementData, index,                       elementCount - index);    elementData[elementCount] = null;    return temp;  }  /**   * Clears all elements in the Vector and sets its size to 0.   */  public void clear()  {    removeAllElements();  }  /**   * Returns true if this Vector contains all the elements in c.   *   * @param c the collection to compare to   * @return true if this vector contains all elements of c   * @throws NullPointerException if c is null   * @since 1.2   */  public synchronized boolean containsAll(Collection c)  {    // Here just for the sychronization.    return super.containsAll(c);  }  /**   * Appends all elements of the given collection to the end of this Vector.   * Behavior is undefined if the collection is modified during this operation   * (for example, if this == c).   *   * @param c the collection to append   * @return true if this vector changed, in other words c was not empty   * @throws NullPointerException if c is null   * @since 1.2   */  public synchronized boolean addAll(Collection c)  {    return addAll(elementCount, c);  }  /**   * Remove from this vector all elements contained in the given collection.   *   * @param c the collection to filter out   * @return true if this vector changed   * @throws NullPointerException if c is null   * @since 1.2   */  public synchronized boolean removeAll(Collection c)  {    if (c == null)      throw new NullPointerException();    int i;    int j;    for (i = 0; i < elementCount; i++)      if (c.contains(elementData[i]))        break;    if (i == elementCount)      return false;    modCount++;    for (j = i++; i < elementCount; i++)      if (! c.contains(elementData[i]))        elementData[j++] = elementData[i];    elementCount -= i - j;    return true;  }  /**   * Retain in this vector only the elements contained in the given collection.   *   * @param c the collection to filter by   * @return true if this vector changed   * @throws NullPointerException if c is null   * @since 1.2   */  public synchronized boolean retainAll(Collection c)  {    if (c == null)      throw new NullPointerException();    int i;    int j;    for (i = 0; i < elementCount; i++)      if (! c.contains(elementData[i]))        break;    if (i == elementCount)      return false;    modCount++;    for (j = i++; i < elementCount; i++)      if (c.contains(elementData[i]))        elementData[j++] = elementData[i];    elementCount -= i - j;    return true;  }  /**   * Inserts all elements of the given collection at the given index of   * this Vector. Behavior is undefined if the collection is modified during   * this operation (for example, if this == c).   *   * @param c the collection to append   * @return true if this vector changed, in other words c was not empty   * @throws NullPointerException if c is null   * @throws ArrayIndexOutOfBoundsException index &lt; 0 || index &gt; size()   * @since 1.2   */  public synchronized boolean addAll(int index, Collection c)  {    checkBoundInclusive(index);    Iterator itr = c.iterator();    int csize = c.size();    modCount++;    ensureCapacity(elementCount + csize);    int end = index + csize;    if (elementCount > 0 && index != elementCount)      System.arraycopy(elementData, index,		       elementData, end, elementCount - index);    elementCount += csize;    for ( ; index < end; index++)      elementData[index] = itr.next();    return (csize > 0);  }  /**   * Compares this to the given object.   *   * @param o the object to compare to   * @return true if the two are equal   * @since 1.2   */  public synchronized boolean equals(Object o)  {    // Here just for the sychronization.    return super.equals(o);  }  /**   * Computes the hashcode of this object.   *   * @return the hashcode   * @since 1.2   */  public synchronized int hashCode()  {    // Here just for the sychronization.    return super.hashCode();  }  /**   * Returns a string representation of this Vector in the form   * "[element0, element1, ... elementN]".   *   * @return the String representation of this Vector   */  public synchronized String toString()  {    // Here just for the sychronization.    return super.toString();  }  /**   * Obtain a List view of a subsection of this list, from fromIndex   * (inclusive) to toIndex (exclusive). If the two indices are equal, the   * sublist is empty. The returned list is modifiable, and changes in one   * reflect in the other. If this list is structurally modified in   * any way other than through the returned list, the result of any subsequent   * operations on the returned list is undefined.   * <p>   *   * @param fromIndex the index that the returned list should start from   *        (inclusive)   * @param toIndex the index that the returned list should go to (exclusive)   * @return a List backed by a subsection of this vector   * @throws IndexOutOfBoundsException if fromIndex &lt; 0   *         || toIndex &gt; size()   * @throws IllegalArgumentException if fromIndex &gt; toIndex   * @see ConcurrentModificationException   * @since 1.2   */  public synchronized List subList(int fromIndex, int toIndex)  {    List sub = super.subList(fromIndex, toIndex);    // We must specify the correct object to synchronize upon, hence the    // use of a non-public API    return new Collections.SynchronizedList(this, sub);  }  /**   * Removes a range of elements from this list.   * Does nothing when toIndex is equal to fromIndex.   *   * @param fromIndex the index to start deleting from (inclusive)   * @param toIndex the index to delete up to (exclusive)   * @throws IndexOutOfBoundsException if fromIndex &gt; toIndex   */  // This does not need to be synchronized, because it is only called through  // clear() of a sublist, and clear() had already synchronized.  protected void removeRange(int fromIndex, int toIndex)  {    int change = toIndex - fromIndex;    if (change > 0)      {        modCount++;        System.arraycopy(elementData, toIndex, elementData, fromIndex,                         elementCount - toIndex);        int save = elementCount;        elementCount -= change;        Arrays.fill(elementData, elementCount, save, null);      }    else if (change < 0)      throw new IndexOutOfBoundsException();  }  /**   * Checks that the index is in the range of possible elements (inclusive).   *   * @param index the index to check   * @throws ArrayIndexOutOfBoundsException if index &gt; size   */  private void checkBoundInclusive(int index)  {    // Implementation note: we do not check for negative ranges here, since    // use of a negative index will cause an ArrayIndexOutOfBoundsException    // with no effort on our part.    if (index > elementCount)      throw new ArrayIndexOutOfBoundsException(index + " > " + elementCount);  }  /**   * Checks that the index is in the range of existing elements (exclusive).   *   * @param index the index to check   * @throws ArrayIndexOutOfBoundsException if index &gt;= size   */  private void checkBoundExclusive(int index)  {    // Implementation note: we do not check for negative ranges here, since    // use of a negative index will cause an ArrayIndexOutOfBoundsException    // with no effort on our part.    if (index >= elementCount)      throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount);  }  /**   * Serializes this object to the given stream.   *   * @param s the stream to write to   * @throws IOException if the underlying stream fails   * @serialData just calls default write function   */  private synchronized void writeObject(ObjectOutputStream s)    throws IOException  {    s.defaultWriteObject();  }}

⌨️ 快捷键说明

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