Class DenseObjectSpace

java.lang.Object
microsim.space.AbstractSpace<Object>
microsim.space.DenseObjectSpace
All Implemented Interfaces:
ObjectSpace
Direct Known Subclasses:
MultiObjectSpace

public class DenseObjectSpace extends AbstractSpace<Object> implements ObjectSpace
A bi-dimensional grid containing one object per cell only.
  • Field Details

    • m

      protected Object[][] m
    • objects

      protected int objects
  • Constructor Details

    • DenseObjectSpace

      public DenseObjectSpace(@NonNull @NonNull AbstractSpace<Object> grid)
      Creates a copy of the given grid.
      Parameters:
      grid - The source grid.
    • DenseObjectSpace

      public DenseObjectSpace(int xSize, int ySize)
      Creates an empty grid with the given size.
      Parameters:
      xSize - The width of the grid.
      ySize - The height of the grid.
  • Method Details

    • get

      @Nullable public @Nullable Object get(int x, int y)
      Returns the object stored at the given position.
      Specified by:
      get in interface ObjectSpace
      Specified by:
      get in class AbstractSpace<Object>
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      Returns:
      The requested object.
    • add

      public boolean add(@NonNull @NonNull Object o)
      Adds an object implementing SpacePosition interface to the grid. If object implements SpacePosition it stored in the right position of the grid.
      Parameters:
      o - The SpacePosition object to be added.
      Returns:
      True if object was added. If o does not implement SpacePosition interface it will not be added and method will return false.
    • swapPositions

      public void swapPositions(int x1, int y1, int x2, int y2)
      Swap the content of the (x1, y1) and (x2, y2) cells of the grid.
      Specified by:
      swapPositions in class AbstractSpace<Object>
      Parameters:
      x1 - The x coordinate for the first cell.
      y1 - The y coordinate for the first cell.
      x2 - The x coordinate for the second cell.
      y2 - The y coordinate for the second cell.
    • set

      public void set(int x, int y, @Nullable @Nullable Object obj)
      Put the given object at the given position.
      Specified by:
      set in interface ObjectSpace
      Specified by:
      set in class AbstractSpace<Object>
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      obj - The object to be stored at the (x, y) cell.
    • getMooreNeighbors

      @NonNull public @NonNull Object[] getMooreNeighbors(int x, int y)
      Gets the Moore neighbors of the specified coordinate. Objects are returned by row starting with the "NW corner" and ending with the "SE corner." The object at (x,y) is not returned.
      Parameters:
      x - The x coordinate of the object
      y - The y coordinate of the object
      Returns:
      an array of objects ordered by row starting with the "NW corner" and ending with the "SE corner."
    • getMooreNeighbors

      @NonNull public @NonNull Object[] getMooreNeighbors(int x, int y, int xExtent, int yExtent)
      Gets the extended Moore neighbors of the specified coordinate. The extensions in the x and y directions are specified by xExtent and yExtent. Objects are returned by row starting with the "NW corner" and ending with the "SE corner." The object at x,y is not returned.
      Parameters:
      x - The x coordinate of the object
      y - The y coordinate of the object
      xExtent - The extension of the neighborhood in the x direction
      yExtent - The extension of the neighborhood in the y direction
      Returns:
      an array of doubles ordered by row starting with the "NW corner" and ending with the "SE corner."
    • getVonNeumannNeighbors

      @NonNull public @NonNull Object[] getVonNeumannNeighbors(int x, int y)
      Gets the von Neumann neighbors of the specified coordinate. Objects are returned in west, east, north, south order. The double at x,y is not returned.
      Parameters:
      x - The x coordinate of the object.
      y - The y coordinate of the object.
      Returns:
      an array of doubles in west, east, north, south order.
    • getVonNeumannNeighbors

      @NonNull public @NonNull Object[] getVonNeumannNeighbors(int x, int y, int xExtent, int yExtent)
      Gets the extended von Neumann neighbors of the specified coordinate. The extensions in the x and y directions are specified by xExtent and yExtent. Objects are returned in west, east, north, south order with the most distant object first. The object at x,y is not returned.
      Parameters:
      x - The x coordinate of the object.
      y - The y coordinate of the object.
      xExtent - The extension of the neighborhood in the x direction.
      yExtent - The extension of the neighborhood in the y direction.
      Returns:
      an array of doubles in west, east, north, south order with the most distant object first.
    • moveGridPosition

      public boolean moveGridPosition(@Nullable @Nullable SpacePosition position, int destinationX, int destinationY)
      Move a SpacePosition object from its current position to the specified destination, only if the destination cell is empty.
      Specified by:
      moveGridPosition in interface ObjectSpace
      Parameters:
      destinationX - The x destination coordinate.
      destinationY - The y destination coordinate.
      position - An object implementing SpacePosition interface.
      Returns:
      true if object has been moved, false otherwise.
    • getMatrix

      @NonNull public @NonNull Object[][] getMatrix()
      Return the matrix of objects representing the grid.
      Returns:
      A matrix of Object with the same dimensions of the grid.
    • size

      public int size()
      Return the number of objects stored into the grid.
      Specified by:
      size in class AbstractSpace<Object>
      Returns:
      The sum of cells containing an object.
    • clear

      public void clear()
      Set all cells to the null value.
      Specified by:
      clear in class AbstractSpace<Object>
    • addGridPosition

      public boolean addGridPosition(@Nullable @Nullable SpacePosition position)
      Add an object implementing SpacePosition interface to the grid. If the destination cell is already occupied the method return false and the object is not added.
      Specified by:
      addGridPosition in interface ObjectSpace
      Parameters:
      position - The SpacePosition object to be added.
      Returns:
      True if object has been added. False if destination cell is already occupied or if argument object is null.
    • removeGridPosition

      public boolean removeGridPosition(@Nullable @Nullable SpacePosition position)
      Remove the SpacePosition object from the grid.
      Specified by:
      removeGridPosition in interface ObjectSpace
      Parameters:
      position - The SpacePosition object to be removed.
      Returns:
      true if object has been removed. False if object is null or is not present on the grid.
    • countObjectsAt

      public int countObjectsAt(int x, int y)
      Return the number of objects currently on the given position.
      Specified by:
      countObjectsAt in interface ObjectSpace
      Specified by:
      countObjectsAt in class AbstractSpace<Object>
      Parameters:
      x - The x coordinate.
      y - The y coordinate.
      Returns:
      the number of object in the cell(x,y). Must be only 0 or 1.