ObjectVectorpublic class ObjectVector extends Object implements CloneableA very simple table that stores a list of objects.
This version is based on a "realloc" strategy -- a simle array is
used, and when more storage is needed, a larger array is obtained
and all existing data is recopied into it. As a result, read/write
access to existing nodes is O(1) fast but appending may be O(N**2)
slow. |
Fields Summary |
---|
protected int | m_blocksizeSize of blocks to allocate | protected Object[] | m_mapArray of objects | protected int | m_firstFreeNumber of ints in array | protected int | m_mapSizeSize of array |
Constructors Summary |
---|
public ObjectVector()Default constructor. Note that the default
block size is very small, for small lists.
m_blocksize = 32;
m_mapSize = m_blocksize;
m_map = new Object[m_blocksize];
| public ObjectVector(int blocksize)Construct a IntVector, using the given block size.
m_blocksize = blocksize;
m_mapSize = blocksize;
m_map = new Object[blocksize];
| public ObjectVector(int blocksize, int increaseSize)Construct a IntVector, using the given block size.
m_blocksize = increaseSize;
m_mapSize = blocksize;
m_map = new Object[blocksize];
| public ObjectVector(ObjectVector v)Copy constructor for ObjectVector
m_map = new Object[v.m_mapSize];
m_mapSize = v.m_mapSize;
m_firstFree = v.m_firstFree;
m_blocksize = v.m_blocksize;
System.arraycopy(v.m_map, 0, m_map, 0, m_firstFree);
|
Methods Summary |
---|
public final void | addElement(java.lang.Object value)Append an object onto the vector.
if ((m_firstFree + 1) >= m_mapSize)
{
m_mapSize += m_blocksize;
Object newMap[] = new Object[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
m_map[m_firstFree] = value;
m_firstFree++;
| public final void | addElements(java.lang.Object value, int numberOfElements)Append several Object values onto the vector.
if ((m_firstFree + numberOfElements) >= m_mapSize)
{
m_mapSize += (m_blocksize+numberOfElements);
Object newMap[] = new Object[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
for (int i = 0; i < numberOfElements; i++)
{
m_map[m_firstFree] = value;
m_firstFree++;
}
| public final void | addElements(int numberOfElements)Append several slots onto the vector, but do not set the values.
if ((m_firstFree + numberOfElements) >= m_mapSize)
{
m_mapSize += (m_blocksize+numberOfElements);
Object newMap[] = new Object[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
m_firstFree += numberOfElements;
| public java.lang.Object | clone()Returns clone of current ObjectVector
return new ObjectVector(this);
| public final boolean | contains(java.lang.Object s)Tell if the table contains the given Object.
for (int i = 0; i < m_firstFree; i++)
{
if (m_map[i] == s)
return true;
}
return false;
| public final java.lang.Object | elementAt(int i)Get the nth element.
return m_map[i];
| public final int | indexOf(java.lang.Object elem, int index)Searches for the first occurence of the given argument,
beginning the search at index, and testing for equality
using the equals method.
for (int i = index; i < m_firstFree; i++)
{
if (m_map[i] == elem)
return i;
}
return java.lang.Integer.MIN_VALUE;
| public final int | indexOf(java.lang.Object elem)Searches for the first occurence of the given argument,
beginning the search at index, and testing for equality
using the equals method.
for (int i = 0; i < m_firstFree; i++)
{
if (m_map[i] == elem)
return i;
}
return java.lang.Integer.MIN_VALUE;
| public final void | insertElementAt(java.lang.Object value, int at)Inserts the specified object 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.
if ((m_firstFree + 1) >= m_mapSize)
{
m_mapSize += m_blocksize;
Object newMap[] = new Object[m_mapSize];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree + 1);
m_map = newMap;
}
if (at <= (m_firstFree - 1))
{
System.arraycopy(m_map, at, m_map, at + 1, m_firstFree - at);
}
m_map[at] = value;
m_firstFree++;
| public final int | lastIndexOf(java.lang.Object elem)Searches for the first occurence of the given argument,
beginning the search at index, and testing for equality
using the equals method.
for (int i = (m_firstFree - 1); i >= 0; i--)
{
if (m_map[i] == elem)
return i;
}
return java.lang.Integer.MIN_VALUE;
| public final void | removeAllElements()Remove all elements objects from the list.
for (int i = 0; i < m_firstFree; i++)
{
m_map[i] = null;
}
m_firstFree = 0;
| public final boolean | removeElement(java.lang.Object s)Removes the first occurrence 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.
for (int i = 0; i < m_firstFree; i++)
{
if (m_map[i] == s)
{
if ((i + 1) < m_firstFree)
System.arraycopy(m_map, i + 1, m_map, i - 1, m_firstFree - i);
else
m_map[i] = null;
m_firstFree--;
return true;
}
}
return false;
| public final void | removeElementAt(int i)Deletes the component at the specified index. Each component in
this vector with an index greater or equal to the specified
index is shifted downward to have an index one smaller than
the value it had previously.
if (i > m_firstFree)
System.arraycopy(m_map, i + 1, m_map, i, m_firstFree);
else
m_map[i] = null;
m_firstFree--;
| public final void | setElementAt(java.lang.Object value, 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.
m_map[index] = value;
| public final void | setSize(int sz)Get the length of the list.
m_firstFree = sz;
| public final void | setToSize(int size)
Object newMap[] = new Object[size];
System.arraycopy(m_map, 0, newMap, 0, m_firstFree);
m_mapSize = size;
m_map = newMap;
| public final int | size()Get the length of the list.
return m_firstFree;
|
|