/**
  * Returns the object at row # row
  *
  * @param row the row number
  * @return the object at row # row. if no such object exists - returns null.
  */
 public Object getObject(int row) {
   if (elements.containsKey(row)) {
     return elements.get(row);
   } else {
     return SparseDefaultValues.getDefaultObject();
   }
 }
  /** Returns the internal representation of this column. */
  public Object getInternal() {
    int max_index = -1;
    Object[] internal = null;
    int[] keys = elements.keys();

    for (int i = 0; i < keys.length; i++) {
      if (keys[i] > max_index) {
        max_index = keys[i];
      }
    }

    internal = new Object[max_index + 1];
    for (int i = 0; i < max_index + 1; i++) {
      internal[i] = SparseDefaultValues.getDefaultObject();
    }

    for (int i = 0; i < keys.length; i++) {
      internal[keys[i]] = elements.get(keys[i]);
    }

    return internal;
  }