JUtil

net.cscott.jutil
Class UniqueVector<E>

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by net.cscott.jutil.UniqueVector<E>
All Implemented Interfaces:
Cloneable, Iterable<E>, Collection<E>, List<E>, Set<E>
Direct Known Subclasses:
UniqueStack

public class UniqueVector<E>
extends AbstractList<E>
implements Set<E>, Cloneable

A unique vector refuses to addElement duplicates.

Conforms to the JDK 1.2 Collections API.

Version:
$Id: UniqueVector.java,v 1.6 2006-10-30 19:58:07 cananian Exp $
Author:
C. Scott Ananian
See Also:
Vector, Hashtable

Field Summary
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
UniqueVector()
          Constructs an empty UniqueVector.
UniqueVector(Collection<? extends E> c)
          Constructs a vector containing the elements of the specified Collection, in the order they are returned by the collection's iterator.
UniqueVector(int initialCapacity)
          Constructs an empty UniqueVector with the specified initial capacity.
 
Method Summary
 boolean add(E obj)
          Adds the specified component to the end of this vector, increasing its size by one, if it doesn't already exist in the vector.
 void add(int index, E element)
          Inserts the specified element at the specified position in this list.
 void addElement(E obj)
          Adds the specified component to the end of this vector, increasing its size by one, if it doesn't already exist in the vector.
 int capacity()
          Returns the current capacity of this vector.
 void clear()
          Removes all of the elements from this collection.
 UniqueVector<E> clone()
          Returns a clone of this vector.
 boolean contains(Object elem)
          Tests if the specified object is a component in this vector.
 void copyInto(Object[] anArray)
          Copies the components of this vector into the specified array.
 E elementAt(int index)
          Returns the component at the specified index.
 Enumeration<E> elements()
          Returns an enumeration of the components of this vector.
 void ensureCapacity(int minCapacity)
          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.
 boolean equals(Object o)
           
 E firstElement()
          Returns the first component of this vector.
 E get(int index)
          Returns the element at the specified posision in this vector.
 int hashCode()
           
 int indexOf(Object elem)
          Returns the first (and only) occurrence of the given argument, testing for equality using the equals method.
 int indexOf(Object elem, int index)
          Returns the first occurrence of the given argument, beginning the search at index, and testing for equality using the equals method.
 void insertElementAt(E obj, int index)
          Inserts the specified object as a component in this vector at the specified index.
 boolean isEmpty()
          Tests if this vector has no components.
 E lastElement()
          Returns the last component of the vector.
 int lastIndexOf(Object elem)
          Returns the index of the last (and only) occurrence of the specified object in this vector.
 int lastIndexOf(Object elem, int index)
          Searches backwards for the specified object, starting from the specified index, and returns an index to it.
 E remove(int index)
          Removes the element at the specified position in this vector.
 void removeAllElements()
          Removes all components from this vector and sets its size to zero.
 boolean removeElement(Object obj)
          Removes the first (and only) occurance of the argument from this vector.
 void removeElementAt(int index)
          Deletes the component at the specified index.
 E set(int index, E obj)
          Replaces the element at the specified position in this vector with the specified element.
 void setElementAt(E obj, int index)
          Sets the component at the specified index of this vector to be the specified object.
 int size()
          Returns the number of components in this vector.
 Object[] toArray()
           
<T> T[]
toArray(T[] a)
           
 String toString()
          Returns a string representation of this vector.
 void trimToSize()
          Trims the capacity of this vector to be the vector's current size.
 
Methods inherited from class java.util.AbstractList
addAll, iterator, listIterator, listIterator, removeRange, subList
 
Methods inherited from class java.util.AbstractCollection
addAll, containsAll, remove, removeAll, retainAll
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Set
addAll, containsAll, iterator, remove, removeAll, retainAll
 
Methods inherited from interface java.util.List
addAll, containsAll, remove, removeAll, retainAll
 

Constructor Detail

UniqueVector

public UniqueVector()
Constructs an empty UniqueVector.


UniqueVector

public UniqueVector(int initialCapacity)
Constructs an empty UniqueVector with the specified initial capacity.


UniqueVector

public UniqueVector(Collection<? extends E> c)
Constructs a vector containing the elements of the specified Collection, in the order they are returned by the collection's iterator. Duplicate elements are skipped.

Method Detail

addElement

public void addElement(E obj)
Adds the specified component to the end of this vector, increasing its size by one, if it doesn't already exist in the vector. Duplicate elements are thrown away. The capacity of the vector is increased if necessary.

Parameters:
obj - the component to be added.

add

public void add(int index,
                E element)
Inserts the specified element at the specified position in this list. To maintain uniqueness, any previous instance of this element in the vector is removed prior to insertion.

Specified by:
add in interface List<E>
Overrides:
add in class AbstractList<E>
Parameters:
index - the specified position.
element - the element to be inserted.

add

public boolean add(E obj)
Adds the specified component to the end of this vector, increasing its size by one, if it doesn't already exist in the vector. Duplicate elements are thrown away. The capacity of the vector is increased if necessary.

Specified by:
add in interface Collection<E>
Specified by:
add in interface List<E>
Specified by:
add in interface Set<E>
Overrides:
add in class AbstractList<E>
Parameters:
obj - the component to be added.

capacity

public int capacity()
Returns the current capacity of this vector.

Throws:
UnsupportedOperationException - not supported.

clone

public UniqueVector<E> clone()
                      throws CloneNotSupportedException
Returns a clone of this vector.

Overrides:
clone in class Object
Returns:
a clone of this vector.
Throws:
CloneNotSupportedException - if the UniqueVector cannot be cloned.

contains

public boolean contains(Object elem)
Tests if the specified object is a component in this vector.

Specified by:
contains in interface Collection<E>
Specified by:
contains in interface List<E>
Specified by:
contains in interface Set<E>
Overrides:
contains in class AbstractCollection<E>
Parameters:
elem - an object
Returns:
true if the specified object is a component in this vector; false otherwise.

copyInto

public void copyInto(Object[] anArray)
Copies the components of this vector into the specified array. The array must be big enough to hold all the objects in this vector.

Parameters:
anArray - the array into which the components get copied.

toArray

public Object[] toArray()
Specified by:
toArray in interface Collection<E>
Specified by:
toArray in interface List<E>
Specified by:
toArray in interface Set<E>
Overrides:
toArray in class AbstractCollection<E>

toArray

public <T> T[] toArray(T[] a)
Specified by:
toArray in interface Collection<E>
Specified by:
toArray in interface List<E>
Specified by:
toArray in interface Set<E>
Overrides:
toArray in class AbstractCollection<E>

elementAt

public E elementAt(int index)
Returns the component at the specified index.

Parameters:
index - an index into this vector.
Returns:
the component at the specified index.
Throws:
ArrayIndexOutOfBoundsException - if an invalid index was given.

get

public E get(int index)
Returns the element at the specified posision in this vector.

Specified by:
get in interface List<E>
Specified by:
get in class AbstractList<E>

elements

public Enumeration<E> elements()
Returns an enumeration of the components of this vector.

Returns:
an enumeration of the components of this vector.

ensureCapacity

public void ensureCapacity(int minCapacity)
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.

Parameters:
minCapacity - the desired minimum capacity.

firstElement

public E firstElement()
Returns the first component of this vector.

Returns:
the first component of this vector.
Throws:
NoSuchElementException - if this vector has no components.

indexOf

public int indexOf(Object elem)
Returns the first (and only) occurrence of the given argument, testing for equality using the equals method.

Specified by:
indexOf in interface List<E>
Overrides:
indexOf in class AbstractList<E>
Parameters:
elem - an object
Returns:
the index of the first occurrence of the argument in this vector; returns -1 if the object is not found.

indexOf

public int indexOf(Object elem,
                   int index)
Returns the first occurrence of the given argument, beginning the search at index, and testing for equality using the equals method.

Parameters:
elem - an object.
index - the index to start searching from.
Returns:
the index of the first occurrence of the object argument in this vector at position index or later in the vector; returns -1 if the object is not found.

insertElementAt

public void insertElementAt(E obj,
                            int index)
Inserts the specified object as a component in this vector at the specified index. Each component in this vector with an index greater or equal to the specified index is shifted upward to have an index one greater than the value it had previously.

The index must be a value greater than or equal to 0 and less than or equal to the current size of the vector.

To maintain uniqueness, removed any previous instance of the component in the vector before insertion.

Parameters:
obj - the component to insert.
index - where to insert the new component.
Throws:
ArrayIndexOutOfBoundsException - if the index was invalid.

isEmpty

public boolean isEmpty()
Tests if this vector has no components.

Specified by:
isEmpty in interface Collection<E>
Specified by:
isEmpty in interface List<E>
Specified by:
isEmpty in interface Set<E>
Overrides:
isEmpty in class AbstractCollection<E>
Returns:
true if this vector has no components; false otherwise.

lastElement

public E lastElement()
Returns the last component of the vector.

Returns:
the last component of the vector, i.e., the component at index size()-1.
Throws:
NoSuchElementException - if this vector is empty.

lastIndexOf

public int lastIndexOf(Object elem)
Returns the index of the last (and only) occurrence of the specified object in this vector.

Specified by:
lastIndexOf in interface List<E>
Overrides:
lastIndexOf in class AbstractList<E>
Parameters:
elem - the desired component.
Returns:
the index of the last occurrence of the specified object in this vector; returns -1 if the object is not found.

lastIndexOf

public int lastIndexOf(Object elem,
                       int index)
Searches backwards for the specified object, starting from the specified index, and returns an index to it.

Parameters:
elem - the desired component.
index - the index to start searching from.
Returns:
the index of the last occurrence of the specified object in this vector at position less than index in the vector; -1 if the object is not found.

removeAllElements

public void removeAllElements()
Removes all components from this vector and sets its size to zero.


clear

public void clear()
Removes all of the elements from this collection.

Specified by:
clear in interface Collection<E>
Specified by:
clear in interface List<E>
Specified by:
clear in interface Set<E>
Overrides:
clear in class AbstractList<E>

removeElement

public final boolean removeElement(Object obj)
Removes the first (and only) occurance of the argument from this vector. If the object is found in this vector, each component in the vector with an index greater or equal to the object's index is shifted downward to have an index one smaller than the value it had previously.

Parameters:
obj - the component to be removed.
Returns:
true if the argument was a component of this vector; false otherwise.

removeElementAt

public void removeElementAt(int index)
Deletes the component at the specified index. Each component in this vector with an index greater than or equal to the specified index is shifted downward to have an index one smaller than the value it had previously.

The index must be a value greater than or equal to 0 and less than the current size of the vector.

Parameters:
index - the index of the object to remove.
Throws:
ArrayIndexOutOfBoundsException - if the index was invalid.

remove

public E remove(int index)
Removes the element at the specified position in this vector.

Specified by:
remove in interface List<E>
Overrides:
remove in class AbstractList<E>

setElementAt

public void setElementAt(E obj,
                         int index)
Sets the component at the specified index of this vector to be the specified object. The previous component at that position is discarded.

The index must be a value greater than or equal to 0 and less than the current size of the vector.

Nothing is done if the component at index is equal to obj. To maintain uniqueness, any component equal to obj is removed before the setElementAt() is done.

Parameters:
obj - what the component is to be set to.
index - the specified index.
Throws:
ArrayIndexOutOfBoundsException - if the index was invalid.

set

public E set(int index,
             E obj)
Replaces the element at the specified position in this vector with the specified element.

Specified by:
set in interface List<E>
Overrides:
set in class AbstractList<E>

size

public int size()
Returns the number of components in this vector.

Specified by:
size in interface Collection<E>
Specified by:
size in interface List<E>
Specified by:
size in interface Set<E>
Specified by:
size in class AbstractCollection<E>
Returns:
the number of components in this vector.

toString

public String toString()
Returns a string representation of this vector.

Overrides:
toString in class AbstractCollection<E>
Returns:
a string representation of this vector.

trimToSize

public void trimToSize()
Trims the capacity of this vector to be the vector's current size. An application can use this operation to minimize the storage of a vector.


hashCode

public int hashCode()
Specified by:
hashCode in interface Collection<E>
Specified by:
hashCode in interface List<E>
Specified by:
hashCode in interface Set<E>
Overrides:
hashCode in class AbstractList<E>

equals

public boolean equals(Object o)
Specified by:
equals in interface Collection<E>
Specified by:
equals in interface List<E>
Specified by:
equals in interface Set<E>
Overrides:
equals in class AbstractList<E>

JUtil

Copyright (c) 2006 C. Scott Ananian