IntVectorpublic class IntVector extends Object implements CloneableA very simple table that stores a list of int.
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. See also SuballocatedIntVector. |
Fields Summary |
---|
protected int | m_blocksizeSize of blocks to allocate | protected int[] | m_mapArray of ints | protected int | m_firstFreeNumber of ints in array | protected int | m_mapSizeSize of array |
Constructors Summary |
---|
public IntVector()Default constructor. Note that the default
block size is very small, for small lists.
m_blocksize = 32;
m_mapSize = m_blocksize;
m_map = new int[m_blocksize];
| public IntVector(int blocksize)Construct a IntVector, using the given block size.
m_blocksize = blocksize;
m_mapSize = blocksize;
m_map = new int[blocksize];
| public IntVector(int blocksize, int increaseSize)Construct a IntVector, using the given block size.
m_blocksize = increaseSize;
m_mapSize = blocksize;
m_map = new int[blocksize];
| public IntVector(IntVector v)Copy constructor for IntVector
m_map = new int[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(int value)Append a int onto the vector.
if ((m_firstFree + 1) >= m_mapSize)
{
m_mapSize += m_blocksize;
int newMap[] = new int[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(int value, int numberOfElements)Append several int values onto the vector.
if ((m_firstFree + numberOfElements) >= m_mapSize)
{
m_mapSize += (m_blocksize+numberOfElements);
int newMap[] = new int[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);
int newMap[] = new int[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 IntVector
return new IntVector(this);
| public final boolean | contains(int s)Tell if the table contains the given node.
for (int i = 0; i < m_firstFree; i++)
{
if (m_map[i] == s)
return true;
}
return false;
| public final int | elementAt(int i)Get the nth element.
return m_map[i];
| public final int | indexOf(int 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(int 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(int value, int at)Inserts the specified node 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;
int newMap[] = new int[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(int 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()Inserts the specified node 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.
for (int i = 0; i < m_firstFree; i++)
{
m_map[i] = java.lang.Integer.MIN_VALUE;
}
m_firstFree = 0;
| public final boolean | removeElement(int 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] = java.lang.Integer.MIN_VALUE;
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] = java.lang.Integer.MIN_VALUE;
m_firstFree--;
| public final void | setElementAt(int 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 int | size()Get the length of the list.
return m_firstFree;
|
|