org.apache.commons.math.linear

## Class SparseFieldMatrix<T extends FieldElement<T>>

- java.lang.Object
- - org.apache.commons.math.linear.AbstractFieldMatrix<T>
  - - org.apache.commons.math.linear.SparseFieldMatrix<T>

Type Parameters:
  `T` - the type of the field elements

All Implemented Interfaces:
  AnyMatrix, FieldMatrix<T>

    public class SparseFieldMatrix<T extends FieldElement<T>>
    extends AbstractFieldMatrix<T>

Sparse matrix implementation based on an open addressed map.

Since:
  2.0
Version:
  $Revision: 811685 $ $Date: 2009-09-05 19:36:48 +0200 (sam. 05 sept. 2009) $

### Field Summary

Fields
`private int` `columns` column dimension
`private OpenIntToFieldHashMap<T>` `entries` Storage for (sparse) matrix elements.
`private int` `rows` row dimension
`private static long` `serialVersionUID` Serial id

### Constructor Summary

Constructors
Constructor and Description
`SparseFieldMatrix(Field<T> field)` Creates a matrix with no data.
`SparseFieldMatrix(Field<T> field, int rowDimension, int columnDimension)` Create a new SparseFieldMatrix<T> with the supplied row and column dimensions.
`SparseFieldMatrix(FieldMatrix<T> other)` Generic copy constructor.
`SparseFieldMatrix(SparseFieldMatrix<T> other)` Copy constructor.

### Method Summary

Methods
`void` `addToEntry(int row, int column, T increment)` Change an entry in the specified row and column.
`private int` `computeKey(int row, int column)` Compute the key to access a matrix element
`FieldMatrix<T>` `copy()` Returns a (deep) copy of this.
`FieldMatrix<T>` `createMatrix(int rowDimension, int columnDimension)` Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.
`int` `getColumnDimension()` Returns the number of columns in the matrix.
`T` `getEntry(int row, int column)` Returns the entry in the specified row and column.
`int` `getRowDimension()` Returns the number of rows in the matrix.
`void` `multiplyEntry(int row, int column, T factor)` Change an entry in the specified row and column.
`void` `setEntry(int row, int column, T value)` Set the entry in the specified row and column.

### Methods inherited from class org.apache.commons.math.linear.AbstractFieldMatrix

`add, buildArray, buildArray, checkAdditionCompatible, checkColumnIndex, checkMultiplicationCompatible, checkRowIndex, checkSubMatrixIndex, checkSubMatrixIndex, checkSubtractionCompatible, copySubMatrix, copySubMatrix, equals, extractField, extractField, getColumn, getColumnMatrix, getColumnVector, getData, getField, getRow, getRowMatrix, getRowVector, getSubMatrix, getSubMatrix, getTrace, hashCode, isSquare, multiply, operate, operate, preMultiply, preMultiply, preMultiply, scalarAdd, scalarMultiply, setColumn, setColumnMatrix, setColumnVector, setRow, setRowMatrix, setRowVector, setSubMatrix, subtract, toString, transpose, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInColumnOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder, walkInRowOrder`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### serialVersionUID

    private static final long serialVersionUID

Serial id

See Also:
  Constant Field Values

#### entries

    private final OpenIntToFieldHashMap<T extends FieldElement<T>> entries

Storage for (sparse) matrix elements.

#### rows

    private final int rows

row dimension

#### columns

    private final int columns

column dimension

### Constructor Detail

#### SparseFieldMatrix

    public SparseFieldMatrix(Field<T> field)

Creates a matrix with no data.

Parameters:
  `field` - field to which the elements belong

#### SparseFieldMatrix

    public SparseFieldMatrix(Field<T> field,
                     int rowDimension,
                     int columnDimension)
                      throws java.lang.IllegalArgumentException

Create a new SparseFieldMatrix<T> with the supplied row and column dimensions.

Parameters:
  `field` - field to which the elements belong
  `rowDimension` - the number of rows in the new matrix
  `columnDimension` - the number of columns in the new matrix
Throws:
  `java.lang.IllegalArgumentException` - if row or column dimension is not positive

#### SparseFieldMatrix

    public SparseFieldMatrix(SparseFieldMatrix<T> other)

Copy constructor.

Parameters:
  `other` - The instance to copy

#### SparseFieldMatrix

    public SparseFieldMatrix(FieldMatrix<T> other)

Generic copy constructor.

Parameters:
  `other` - The instance to copy

### Method Detail

#### addToEntry

    public void addToEntry(int row,
                  int column,
                  T increment)
                    throws MatrixIndexException

Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `addToEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `addToEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `increment` - value to add to the current matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### copy

    public FieldMatrix<T> copy()

Returns a (deep) copy of this.

Specified by:
  `copy` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `copy` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  matrix copy

#### createMatrix

    public FieldMatrix<T> createMatrix(int rowDimension,
                              int columnDimension)
                                                        throws java.lang.IllegalArgumentException

Create a new FieldMatrix<T> of the same type as the instance with the supplied row and column dimensions.

Specified by:
  `createMatrix` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `createMatrix` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `rowDimension` - the number of rows in the new matrix
  `columnDimension` - the number of columns in the new matrix
Returns:
  a new matrix of the same type as the instance
Throws:
  `java.lang.IllegalArgumentException` - if row or column dimension is not positive

#### getColumnDimension

    public int getColumnDimension()

Returns the number of columns in the matrix.

Specified by:
  `getColumnDimension` in interface `AnyMatrix`
Specified by:
  `getColumnDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  columnDimension

#### getEntry

    public T getEntry(int row,
             int column)
                                       throws MatrixIndexException

Returns the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `getEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `getEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `row` - row location of entry to be fetched
  `column` - column location of entry to be fetched
Returns:
  matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### getRowDimension

    public int getRowDimension()

Returns the number of rows in the matrix.

Specified by:
  `getRowDimension` in interface `AnyMatrix`
Specified by:
  `getRowDimension` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Returns:
  rowDimension

#### multiplyEntry

    public void multiplyEntry(int row,
                     int column,
                     T factor)
                       throws MatrixIndexException

Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `multiplyEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `multiplyEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `factor` - multiplication factor for the current matrix entry in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### setEntry

    public void setEntry(int row,
                int column,
                T value)
                  throws MatrixIndexException

Set the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

- `0 <= row < rowDimension`
- `0 <= column < columnDimension`

otherwise a `MatrixIndexException` is thrown.

Specified by:
  `setEntry` in interface `FieldMatrix<T extends FieldElement<T>>`
Specified by:
  `setEntry` in class `AbstractFieldMatrix<T extends FieldElement<T>>`
Parameters:
  `row` - row location of entry to be set
  `column` - column location of entry to be set
  `value` - matrix entry to be set in row,column
Throws:
  `MatrixIndexException` - if the row or column index is not valid

#### computeKey

    private int computeKey(int row,
                 int column)

Compute the key to access a matrix element

Parameters:
  `row` - row index of the matrix element
  `column` - column index of the matrix element
Returns:
  key within the map to access the matrix element