FileDocCategorySizeDatePackage
ObjectVector.javaAPI DocJava SE 5 API9815Fri Aug 26 14:56:04 BST 2005com.sun.org.apache.xml.internal.utils

ObjectVector

public class ObjectVector extends Object implements Cloneable
A 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.
xsl.usage
internal

Fields Summary
protected int
m_blocksize
Size of blocks to allocate
protected Object[]
m_map
Array of objects
protected int
m_firstFree
Number of ints in array
protected int
m_mapSize
Size 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.

param
blocksize Size of block to allocate


    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.

param
blocksize Size of block to allocate


    m_blocksize = increaseSize;
    m_mapSize = blocksize;
    m_map = new Object[blocksize];
  
public ObjectVector(ObjectVector v)
Copy constructor for ObjectVector

param
v Existing ObjectVector to copy

  	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 voidaddElement(java.lang.Object value)
Append an object onto the vector.

param
value Object to add to the list


    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 voidaddElements(java.lang.Object value, int numberOfElements)
Append several Object values onto the vector.

param
value Object to add to the list


    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 voidaddElements(int numberOfElements)
Append several slots onto the vector, but do not set the values.

param
numberOfElements number of slots to append


    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.Objectclone()
Returns clone of current ObjectVector

return
clone of current ObjectVector

  	return new ObjectVector(this);
  
public final booleancontains(java.lang.Object s)
Tell if the table contains the given Object.

param
s object to look for
return
true if the object is in the list


    for (int i = 0; i < m_firstFree; i++)
    {
      if (m_map[i] == s)
        return true;
    }

    return false;
  
public final java.lang.ObjectelementAt(int i)
Get the nth element.

param
i index of object to get
return
object at given index

    return m_map[i];
  
public final intindexOf(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.

param
elem object to look for
param
index Index of where to begin search
return
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.


    for (int i = index; i < m_firstFree; i++)
    {
      if (m_map[i] == elem)
        return i;
    }

    return java.lang.Integer.MIN_VALUE;
  
public final intindexOf(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.

param
elem object to look for
return
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.


    for (int i = 0; i < m_firstFree; i++)
    {
      if (m_map[i] == elem)
        return i;
    }

    return java.lang.Integer.MIN_VALUE;
  
public final voidinsertElementAt(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.

param
value Object to insert
param
at Index of where to insert


    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 intlastIndexOf(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.

param
elem Object to look for
return
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.


    for (int i = (m_firstFree - 1); i >= 0; i--)
    {
      if (m_map[i] == elem)
        return i;
    }

    return java.lang.Integer.MIN_VALUE;
  
public final voidremoveAllElements()
Remove all elements objects from the list.


    for (int i = 0; i < m_firstFree; i++)
    {
      m_map[i] = null;
    }

    m_firstFree = 0;
  
public final booleanremoveElement(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.

param
s Object to remove from array
return
True if the object was removed, false if it was not found


    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 voidremoveElementAt(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.

param
i index of where to remove an object


    if (i > m_firstFree)
      System.arraycopy(m_map, i + 1, m_map, i, m_firstFree);
    else
      m_map[i] = null;

    m_firstFree--;
  
public final voidsetElementAt(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.

param
value object to set
param
index Index of where to set the object

    m_map[index] = value;
  
public final voidsetSize(int sz)
Get the length of the list.

return
length of the list

    m_firstFree = sz;
  
public final voidsetToSize(int size)

    
    Object newMap[] = new Object[size];
    
    System.arraycopy(m_map, 0, newMap, 0, m_firstFree);
    m_mapSize = size;

    m_map = newMap;
    
  
public final intsize()
Get the length of the list.

return
length of the list

    return m_firstFree;