edu.umd.cfar.lamp.viper.util
Class PackedMatrix

java.lang.Object
  extended byedu.umd.cfar.lamp.viper.util.PackedMatrix
All Implemented Interfaces:
DataMatrix2d

public class PackedMatrix
extends java.lang.Object
implements DataMatrix2d

This class implements a simple 2-dimensional matrix as a wrapper around a standard java 2-dimensional array.

Author:
David Mihalcik
See Also:
MatrixIndexOutOfBoundsException

Constructor Summary
PackedMatrix(DataMatrix2d old, java.util.BitSet cols, java.util.BitSet rows)
          Creates a new PackedMatrix, carving out from an old one.
PackedMatrix(int maxWidth, int maxHeight)
          Constructs a new matrix with the given dimensions.
PackedMatrix(int maxWidth, int maxHeight, java.lang.Class type)
          This constructor is necessary if you want getDataModel to return an array of a specific type instead of Object[][].
PackedMatrix(java.lang.Object[][] data)
          Constructs a new PackedMatrix as a wrapper around the given 2-dimensional array.
 
Method Summary
 java.lang.Object get(int column, int row)
          Returns the object at the given location.
 java.lang.Object[][] getDataModel()
          Get the java array used to internally represent this matrix.
 MatrixIterator getMatrixIterator()
          Returns a MatrixIterator for this matrix.
 int height()
          Returns the current real height, that is, the largest row number (+1) that contains data.
 java.lang.Object remove(int column, int row)
          Sets the object at the specified location to null.
 void set(int column, int row, java.lang.Object data)
          Sets the data at the specific location to the given value.
 int sizeHigh()
          Get the logical height of the matrix.
 int sizeWide()
          Get the logical width of the matrix.
 int width()
          Returns the current real height, that is, the index of the rightmost column that contains data +1.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PackedMatrix

public PackedMatrix(java.lang.Object[][] data)
Constructs a new PackedMatrix as a wrapper around the given 2-dimensional array.

Parameters:
data - The array to wrap.

PackedMatrix

public PackedMatrix(int maxWidth,
                    int maxHeight,
                    java.lang.Class type)
This constructor is necessary if you want getDataModel to return an array of a specific type instead of Object[][].

Parameters:
maxWidth - The number of columns to have in the matrix.
maxHeight - The number of rows to have in the matrix.
type - The class object specifying the type of object stored here.

PackedMatrix

public PackedMatrix(int maxWidth,
                    int maxHeight)
Constructs a new matrix with the given dimensions.

Parameters:
maxWidth - The number of columns to have in the matrix.
maxHeight - The number of rows to have in the matrix.

PackedMatrix

public PackedMatrix(DataMatrix2d old,
                    java.util.BitSet cols,
                    java.util.BitSet rows)
Creates a new PackedMatrix, carving out from an old one. Logically, it creates a matrix of the count of all set bits in cols wide and the count of all set bits in rows high, and fills it with the data from those rows and columns in the old matrix.

Parameters:
old - The matrix to canabalize.
cols - The columns to copy.
rows - The rows to copy.
Method Detail

getDataModel

public java.lang.Object[][] getDataModel()
Get the java array used to internally represent this matrix.

Returns:
The array that this wraps.

width

public int width()
Returns the current real height, that is, the index of the rightmost column that contains data +1. This takes a while.

Specified by:
width in interface DataMatrix2d
Returns:
An integer set to the index eastmost column containing data +1.

height

public int height()
Returns the current real height, that is, the largest row number (+1) that contains data. This takes a while.

Specified by:
height in interface DataMatrix2d
Returns:
An integer set to the index northmost column containing data +1.

sizeWide

public int sizeWide()
Get the logical width of the matrix. This is equivalent to the number of possible columns, x-length, or .length. It is equavalent to getDataModel().length.

Specified by:
sizeWide in interface DataMatrix2d
Returns:
The maximum possible column index + 1.

sizeHigh

public int sizeHigh()
Get the logical height of the matrix. This is equivalent to the number of rows, y-length, or [0].length. It is equavalent to getDataModel()[0].length.

Specified by:
sizeHigh in interface DataMatrix2d
Returns:
The maximum possible row index + 1.

get

public java.lang.Object get(int column,
                            int row)
Returns the object at the given location.

Specified by:
get in interface DataMatrix2d
Parameters:
column - The column (x position) of the cell to get.
row - The row (y position) of the cell to get.
Returns:
A reference to the object in the specified cell, or null if none is found.
Throws:
MatrixIndexOutOfBoundsException - if the index is not within the boundaries of this matrix.

remove

public java.lang.Object remove(int column,
                               int row)
Sets the object at the specified location to null. It will no longer be found by a MatrixIterator or an unordered Iterator.

Specified by:
remove in interface DataMatrix2d
Parameters:
column - The column (x position) of the cell to remove.
row - The row (y position) of the cell to remove.
Returns:
A reference to the object that was in the specified cell, or null if none is found.
Throws:
MatrixIndexOutOfBoundsException - if the index is not within the boundaries of this matrix.

set

public void set(int column,
                int row,
                java.lang.Object data)
Sets the data at the specific location to the given value.

Specified by:
set in interface DataMatrix2d
Parameters:
column - The column (x position) of the cell to set.
row - The row (y position) of the cell to set.
data - The object to put into the specified cell.
Throws:
MatrixIndexOutOfBoundsException - if the index is not within the boundaries of this matrix.

getMatrixIterator

public MatrixIterator getMatrixIterator()
Returns a MatrixIterator for this matrix.

Specified by:
getMatrixIterator in interface DataMatrix2d
Returns:
A MatrixIterator that can find all set cells.