SparseArray(Class<L> linearArrayType,int[] rowIndices,int[] colIndices,L realValues,L imagValues,int numRows,int numCols){
  validateUserSuppliedParameters(linearArrayType,rowIndices,colIndices,realValues,imagValues);
  _baseComponentType=linearArrayType.getComponentType();
  _outputArrayType=(Class<L[]>)ArrayUtils.getArrayClass(_baseComponentType,2);
  Map<SparseKey,SparseValue> sparseMap=createSparseMap(linearArrayType,rowIndices,colIndices,realValues,imagValues,numRows,numCols);
  _numRows=numRows;
  _numCols=numCols;
  ArrayList<SparseKey> keys=new ArrayList<SparseKey>(sparseMap.keySet());
  Collections.sort(keys);
  _rowIndices=new int[keys.size()];
  _colIndices=new int[keys.size()];
  _linearIndices=new int[keys.size()];
  _realValues=linearArrayType.cast(Array.newInstance(_baseComponentType,keys.size()));
  _imagValues=imagValues == null ? null : linearArrayType.cast(Array.newInstance(_baseComponentType,keys.size()));
  for (int i=0; i < keys.size(); i++) {
    SparseKey key=keys.get(i);
    _rowIndices[i]=key.row;
    _colIndices[i]=key.col;
    _linearIndices[i]=key.linearIndex;
    SparseValue value=sparseMap.get(key);
    setSparseValue(value,_realValues,_imagValues,i);
  }
}

SparseArray ( Class < L > linearArrayType , int [ ] rowIndices , int [ ] colIndices , L realValues , L imagValues , int numRows , int numCols ) { validateUserSuppliedParameters ( linearArrayType , rowIndices , colIndices , realValues , imagValues ) ; _baseComponentType = linearArrayType . getComponentType ( ) ; _outputArrayType = ( Class < L [ ] > ) ArrayUtils . getArrayClass ( _baseComponentType , 2 ) ; Map < SparseKey , SparseValue > sparseMap = createSparseMap ( linearArrayType , rowIndices , colIndices , realValues , imagValues , numRows , numCols ) ; _numRows = numRows ; _numCols = numCols ; ArrayList < SparseKey > keys = new ArrayList < SparseKey > ( sparseMap . keySet ( ) ) ; Collections . sort ( keys ) ; _rowIndices = new int [ keys . size ( ) ] ; _colIndices = new int [ keys . size ( ) ] ; _linearIndices = new int [ keys . size ( ) ] ; _realValues = linearArrayType . cast ( Array . newInstance ( _baseComponentType , keys . size ( ) ) ) ; _imagValues = imagValues == null ? null : linearArrayType . cast ( Array . newInstance ( _baseComponentType , keys . size ( ) ) ) ; for ( int i = 0 ; i < keys . size ( ) ; i ++ ) { SparseKey key = keys . get ( i ) ; _rowIndices [ i ] = key . row ; _colIndices [ i ] = key . col ; _linearIndices [ i ] = key . linearIndex ; SparseValue value = sparseMap . get ( key ) ; setSparseValue ( value , _realValues , _imagValues , i ) ; } }
data provided by a user ; this data needs to be validated and processed .
