Class ImmutableGrid<V>

  • Type Parameters:
    V - the type of the value
    All Implemented Interfaces:
    Grid<V>

    public abstract class ImmutableGrid<V>
    extends java.lang.Object
    Immutable implementation of the Grid data structure.
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.joda.collect.grid.Grid

        Grid.Cell<V>
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      Grid.Cell<V> cell​(int row, int column)
      Gets the cell at the specified row-column.
      void clear()
      Deprecated.
      Grid is read-only
      java.util.List<V> column​(int column)
      Gets the rows of a single column.
      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 <R> ImmutableGrid<R> copyOf​(int rowCount, int columnCount, java.lang.Iterable<? extends Grid.Cell<R>> cells)
      Obtains an immutable grid by copying a set of cells.
      static <R> ImmutableGrid<R> copyOf​(int rowCount, int columnCount, Grid.Cell<R> cell)
      Obtains an immutable grid with one cell.
      static <R> ImmutableGrid<R> copyOf​(Grid<R> grid)
      Obtains an immutable grid by copying another grid.
      static <R> ImmutableGrid<R> copyOfDeriveCounts​(java.lang.Iterable<? extends Grid.Cell<R>> cells)
      Obtains an immutable grid by copying a set of cells, deriving the row and column count.
      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.
      static <R> ImmutableGrid<R> of()
      Obtains an empty immutable grid with zero row-column count.
      static <R> ImmutableGrid<R> of​(int rowCount, int columnCount)
      Obtains an empty immutable grid of the specified row-column count.
      static <R> ImmutableGrid<R> of​(int rowCount, int columnCount, int row, int column, R value)
      Obtains an immutable grid of the specified row-column count with a single cell.
      static <R> ImmutableGrid<R> of​(R value)
      Obtains an immutable grid with row-column count 1x1 and a single cell.
      void put​(int row, int column, V value)
      Deprecated.
      Grid is read-only
      void putAll​(Grid<? extends V> grid)
      Deprecated.
      Grid is read-only
      boolean remove​(int row, int column)
      Deprecated.
      Grid is read-only
      java.util.List<V> row​(int row)
      Gets the columns of a single row.
      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.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • of

        public static <R> ImmutableGrid<R> of()
        Obtains an empty immutable grid with zero row-column count.
        Type Parameters:
        R - the type of the value
        Returns:
        the empty immutable grid, not null
      • of

        public static <R> ImmutableGrid<R> of​(int rowCount,
                                              int columnCount)
        Obtains an empty immutable grid of the specified row-column count.
        Type Parameters:
        R - the type of the value
        Parameters:
        rowCount - the number of rows, zero or greater
        columnCount - the number of columns, zero or greater
        Returns:
        the empty immutable grid, not null
      • of

        public static <R> ImmutableGrid<R> of​(R value)
        Obtains an immutable grid with row-column count 1x1 and a single cell.

        The single cell is at row zero column zero.

        Type Parameters:
        R - the type of the value
        Parameters:
        value - the value of the single cell, not null
        Returns:
        the empty immutable grid, not null
      • of

        public static <R> ImmutableGrid<R> of​(int rowCount,
                                              int columnCount,
                                              int row,
                                              int column,
                                              R value)
        Obtains an immutable grid of the specified row-column count with a single cell.
        Type Parameters:
        R - the type of the value
        Parameters:
        rowCount - the number of rows, zero or greater
        columnCount - the number of columns, zero or greater
        row - the row of the single cell, zero or greater
        column - the column of the single cell, zero or greater
        value - the value of the single cell, not null
        Returns:
        the empty immutable grid, not null
      • copyOf

        public static <R> ImmutableGrid<R> copyOf​(int rowCount,
                                                  int columnCount,
                                                  Grid.Cell<R> cell)
        Obtains an immutable grid with one cell.
        Type Parameters:
        R - the type of the value
        Parameters:
        rowCount - the number of rows, zero or greater
        columnCount - the number of columns, zero or greater
        cell - the cell that the grid should contain, not null
        Returns:
        the immutable grid, not null
        Throws:
        java.lang.IndexOutOfBoundsException - if either index is less than zero
      • copyOf

        public static <R> ImmutableGrid<R> copyOf​(int rowCount,
                                                  int columnCount,
                                                  java.lang.Iterable<? extends Grid.Cell<R>> cells)
        Obtains an immutable grid by copying a set of cells.
        Type Parameters:
        R - the type of the value
        Parameters:
        rowCount - the number of rows, zero or greater
        columnCount - the number of columns, zero or greater
        cells - the cells to copy, not null
        Returns:
        the immutable grid, not null
        Throws:
        java.lang.IndexOutOfBoundsException - if either index is less than zero
      • copyOfDeriveCounts

        public static <R> ImmutableGrid<R> copyOfDeriveCounts​(java.lang.Iterable<? extends Grid.Cell<R>> cells)
        Obtains an immutable grid by copying a set of cells, deriving the row and column count.

        The row and column counts are calculated as the maximum row and column specified.

        Type Parameters:
        R - the type of the value
        Parameters:
        cells - the cells to copy, not null
        Returns:
        the immutable grid, not null
        Throws:
        java.lang.IndexOutOfBoundsException - if either index is less than zero
      • copyOf

        public static <R> ImmutableGrid<R> copyOf​(Grid<R> grid)
        Obtains an immutable grid by copying another grid.

        If you need to change the row-column count, use copyOf(int, int, Iterable) passing in the set of cells from the grid.

        Type Parameters:
        R - the type of the value
        Parameters:
        grid - the grid to copy, not null
        Returns:
        the immutable grid, not null
        Throws:
        java.lang.IndexOutOfBoundsException - if either index is less than zero
      • clear

        @Deprecated
        public void clear()
        Deprecated.
        Grid is read-only
        Clears the grid.

        The grid will be empty after calling this method.

      • put

        @Deprecated
        public void put​(int row,
                        int column,
                        V value)
        Deprecated.
        Grid is read-only
        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.

        Parameters:
        row - the row, zero or greater
        column - the column, zero or greater
        value - the value to put into the grid, not null
      • putAll

        @Deprecated
        public void putAll​(Grid<? extends V> grid)
        Deprecated.
        Grid is read-only
        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.

        Parameters:
        grid - the grid to put into this grid, not null
      • remove

        @Deprecated
        public boolean remove​(int row,
                              int column)
        Deprecated.
        Grid is read-only
        Removes the value at the specified row-column.

        If either index does not exist, no action occurs and false is returned.

        Parameters:
        row - the row
        column - the column
        Returns:
        true if the grid is altered
      • 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.

        Specified by:
        exists in interface Grid<V>
        Parameters:
        row - the row
        column - the column
        Returns:
        true if the row-column exists
      • 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.

        Specified by:
        isFull in interface Grid<V>
        Returns:
        true if full
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: Grid
        Checks if the grid is empty.
        Specified by:
        isEmpty in interface Grid<V>
        Returns:
        true if empty
      • size

        public int size()
        Description copied from interface: Grid
        Gets the number of cells that are present.
        Specified by:
        size in interface Grid<V>
        Returns:
        the size of the set of cells
      • 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.

        Specified by:
        contains in interface Grid<V>
        Parameters:
        row - the row
        column - the column
        Returns:
        true if there is a value at the row-column
      • 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 interface Grid<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.

        Specified by:
        get in interface Grid<V>
        Parameters:
        row - the row
        column - the column
        Returns:
        the value at the row-column, null if not found
      • 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.

        Specified by:
        cell in interface Grid<V>
        Parameters:
        row - the row
        column - the column
        Returns:
        the cell at the row-column, null if not found
      • 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.

        Specified by:
        values in interface Grid<V>
        Returns:
        the collection of all values, not null
      • 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.

        Specified by:
        row in interface Grid<V>
        Parameters:
        row - the row, zero or greater
        Returns:
        the columns of the specified row, not null
      • 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 to columnCount. 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.

        Specified by:
        rows in interface Grid<V>
        Returns:
        the entire grid, by row then column, not null
      • 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.

        Specified by:
        column in interface Grid<V>
        Parameters:
        column - the column, zero or greater
        Returns:
        the rows of the specified column, not null
      • 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 to rowCount. 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.

        Specified by:
        columns in interface Grid<V>
        Returns:
        the entire grid, by row then column, not null
      • 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.

        Specified by:
        equals in interface Grid<V>
        Overrides:
        equals in class java.lang.Object
        Parameters:
        obj - the object to compare to, null returns false
        Returns:
        true if equal
      • 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().

        Specified by:
        hashCode in interface Grid<V>
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hash code
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object