- java.lang.Object
-
- org.joda.collect.grid.DenseGrid<V>
-
- Type Parameters:
V
- the type of the value
- All Implemented Interfaces:
java.io.Serializable
,Grid<V>
public final class DenseGrid<V> extends java.lang.Object implements java.io.Serializable
Mutable implementation of theGrid
data structure based on an array.This uses one item of memory for each possible combination of row and column.
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Grid.Cell<V>
cell(int row, int column)
Gets the cell at the specified row-column.java.util.Set<Grid.Cell<V>>
cells()
Gets the complete set of cells.void
clear()
Clears the grid.java.util.List<V>
column(int column)
Gets the rows of a single column.int
columnCount()
Gets the number of columns in the grid.java.util.List<java.util.List<V>>
columns()
Gets the entire grid of values, by column then row.boolean
contains(int row, int column)
Checks if a value is present at the specified row-column.boolean
containsValue(java.lang.Object valueToFind)
Checks if the specified value is contained in the grid.static <V> DenseGrid<V>
create(int rowCount, int columnCount)
Creates an emptyDenseGrid
of the specified size.static <V> DenseGrid<V>
create(Grid<? extends V> grid)
Creates aDenseGrid
copying from another grid.static <V> DenseGrid<V>
create(V[][] array)
Creates aDenseGrid
copying from an array.boolean
equals(java.lang.Object obj)
Checks if this grid equals another grid.boolean
exists(int row, int column)
Checks if the specified row-column exists.V
get(int row, int column)
Gets the value at the specified row-column.int
hashCode()
Gets a suitable hash code.boolean
isEmpty()
Checks if the grid is empty.boolean
isFull()
Checks if the grid is full.void
put(int row, int column, V value)
Puts a value into this grid.void
putAll(Grid<? extends V> grid)
Puts all cells from a grid into this grid.boolean
remove(int row, int column)
Removes the value at the specified row-column.java.util.List<V>
row(int row)
Gets the columns of a single row.int
rowCount()
Gets the number of rows in the grid.java.util.List<java.util.List<V>>
rows()
Gets the entire grid of values, by row then column.int
size()
Gets the number of cells that are present.java.lang.String
toString()
com.google.common.collect.ImmutableCollection<V>
values()
Gets the values in order through rows, then columns.
-
-
-
Method Detail
-
create
public static <V> DenseGrid<V> create(int rowCount, int columnCount)
Creates an emptyDenseGrid
of the specified size.- Type Parameters:
V
- the type of the value- Parameters:
rowCount
- the number of rows, zero or greatercolumnCount
- the number of rows, zero or greater- Returns:
- the mutable grid, not null
-
create
public static <V> DenseGrid<V> create(Grid<? extends V> grid)
Creates aDenseGrid
copying from another grid.- Type Parameters:
V
- the type of the value- Parameters:
grid
- the grid to copy, not null- Returns:
- the mutable grid, not null
-
create
public static <V> DenseGrid<V> create(V[][] array)
Creates aDenseGrid
copying from an array.The row count and column count are derived from the maximum size of the array. The grid is initialized from the non-null values.
- Type Parameters:
V
- the type of the value- Parameters:
array
- the array, first by row, then by column- Returns:
- the mutable grid, not null
-
rowCount
public int rowCount()
Description copied from interface:Grid
Gets the number of rows in the grid.A grid has a fixed number of rows and columns, but not all cells must be occupied. This returns the row capacity, not the number of occupied rows. It is guaranteed that
Grid.contains(int, int)
will returnfalse
for indices larger than the row count.
-
columnCount
public int columnCount()
Description copied from interface:Grid
Gets the number of columns in the grid.A grid has a fixed number of rows and columns, but not all cells must be occupied. This returns the column capacity, not the number of occupied columns. It is guaranteed that
Grid.contains(int, int)
will returnfalse
for indices larger than the column count.- Specified by:
columnCount
in interfaceGrid<V>
- Returns:
- the number of columns, zero or greater
-
size
public int size()
Description copied from interface:Grid
Gets the number of cells that are present.
-
contains
public boolean contains(int row, int column)
Description copied from interface:Grid
Checks if a value is present at the specified row-column.If either index does not exist, false is returned.
-
containsValue
public boolean containsValue(java.lang.Object valueToFind)
Description copied from interface:Grid
Checks if the specified value is contained in the grid.- Specified by:
containsValue
in interfaceGrid<V>
- Parameters:
valueToFind
- the value to find, null returns false- Returns:
- true if the grid contains the value
-
get
public V get(int row, int column)
Description copied from interface:Grid
Gets the value at the specified row-column.If either index does not exist, null is returned.
-
cell
public Grid.Cell<V> cell(int row, int column)
Description copied from interface:Grid
Gets the cell at the specified row-column.If either index does not exist, null is returned.
-
cells
public java.util.Set<Grid.Cell<V>> cells()
Description copied from interface:Grid
Gets the complete set of cells.If the grid is mutable then cells may be added or removed from the set. The cells are returned in order, looping around rows, then columns.
The cell returned from the set iterator may be a mutable
Cell
implementation that cannot be stored beyond the lifetime of an iteration.
-
values
public com.google.common.collect.ImmutableCollection<V> values()
Description copied from interface:Grid
Gets the values in order through rows, then columns.The returned data structure is an ordered collection. The values are returned in order, looping around rows, then columns.
-
row
public java.util.List<V> row(int row)
Description copied from interface:Grid
Gets the columns of a single row.The list will contain all columns from zero to
columnCount
. Where there is no value for a cell, the list will contain null.The returned list is immutable, except for
List.set(int, Object)
, which adds, updates or deletes from the underlying grid.
-
rows
public java.util.List<java.util.List<V>> rows()
Description copied from interface:Grid
Gets the entire grid of values, by row then column.The outer list contains all rows from zero to
rowCount
. Each inner list contains all columns from zero tocolumnCount
. Where there is no value for a cell, the value is null.The returned list is immutable, except for the
List.set(int, Object)
method on the inner list, which adds, updates or deletes from the underlying grid.
-
column
public java.util.List<V> column(int column)
Description copied from interface:Grid
Gets the rows of a single column.The list will contain all rows from zero to
rowCount
. Where data is not present, the list will contain null.The returned list is immutable, except for
List.set(int, Object)
, which adds, updates or deletes from the underlying grid.
-
columns
public java.util.List<java.util.List<V>> columns()
Description copied from interface:Grid
Gets the entire grid of values, by column then row.The outer list contains all columns from zero to
columnCount
. Each inner list contains all rows from zero torowCount
. Where there is no value for a cell, the value is null.The returned list is immutable, except for the
List.set(int, Object)
method on the inner list, which adds, updates or deletes from the underlying grid.
-
clear
public void clear()
Description copied from interface:Grid
Clears the grid.The grid will be empty after calling this method.
-
put
public void put(int row, int column, V value)
Description copied from interface:Grid
Puts a value into this grid.The value at the specified row-column is set. Any previous value at the row-column is replaced.
If either index does not exist,
IndexOutOfBoundsException
is thrown.
-
putAll
public void putAll(Grid<? extends V> grid)
Description copied from interface:Grid
Puts all cells from a grid into this grid.The value at the specified row-column is set. Any previous value at the row-column is replaced.
-
remove
public boolean remove(int row, int column)
Description copied from interface:Grid
Removes the value at the specified row-column.If either index does not exist, no action occurs and false is returned.
-
equals
public boolean equals(java.lang.Object obj)
Description copied from interface:Grid
Checks if this grid equals another grid.Two grids are equal if they are the same size and contain the same set of cells.
-
hashCode
public int hashCode()
Description copied from interface:Grid
Gets a suitable hash code.The hash code is
rowCount ^ Integer.rotateLeft(columnCount, 16) ^ cells.hashCode()
.
-
exists
public boolean exists(int row, int column)
Description copied from interface:Grid
Checks if the specified row-column exists.This simply checks that the row and column indices are between zero and the row and column counts.
-
isFull
public boolean isFull()
Description copied from interface:Grid
Checks if the grid is full.A full grid has a cell at every combination of row and column.
-
isEmpty
public boolean isEmpty()
Description copied from interface:Grid
Checks if the grid is empty.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-