Class SparseObjectSpace

java.lang.Object
microsim.space.AbstractSpace<Object>
microsim.space.SparseObjectSpace
All Implemented Interfaces:
ObjectSpace

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

    • m

      protected HashMap<microsim.space.SparseObjectSpace.HashKey,Object> m
  • Constructor Details

    • SparseObjectSpace

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

      public SparseObjectSpace(int xSize, int ySize)
      Create a grid with 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)
      Return 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.
    • 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.
    • 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.
    • 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). Can be only 0 or 1.
    • 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.
    • gridIterator

      @NonNull public @NonNull ObjectSpaceIterator<Object> gridIterator()
      Return a ObjectSpaceIterator storing the position of the read value.
      Returns:
      An iterator that scrolls grid from the top-left corner to the bottom-right, reading each line from left to right. It remembers the position of the last read value.
    • 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.
    • contains

      public boolean contains(@NonNull @NonNull Object o)
      Test if given object is contained into the grid.
      Parameters:
      o - The object to be tested.
      Returns:
      True if object is present into the grid.
    • iterator

      @NonNull public @NonNull Iterator<Object> iterator()
      Returns:
      An iterator that scrolls grid from the top-left corner to the bottom-right, reading each line from left to right.
    • toArray

      @NonNull public @NonNull Object[] toArray()
      Return an array of objects stored into the grid.
      Returns:
      A vector containing only the objects stored into the grid. The empty cells are ignored.
    • add

      public boolean add(@NonNull @NonNull Object o)
      Add 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.
    • remove

      public boolean remove(@NonNull @NonNull Object o)
      Remove the given object from the grid.
      Parameters:
      o - The object to be removed.
      Returns:
      True if object was found and removed, false otherwise.
      Throws:
      ClassCastException - If o does not implement SpacePosition interface.
    • clear

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

      public boolean equals(@NonNull @NonNull Object o)
      Test if o is the same of this. There is no content comparing.
      Overrides:
      equals in class AbstractSpace<Object>
      Parameters:
      o - The object to be compared.
      Returns:
      True o is this object.
    • addGridPosition

      public boolean addGridPosition(@Nullable @Nullable SpacePosition object)
      Add an object implementing SpacePosition interface to the grid. If the destination cell is already occupied the method returns false and the object is not added.
      Specified by:
      addGridPosition in interface ObjectSpace
      Parameters:
      object - 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 object)
      Remove the SpacePosition object from the grid.
      Specified by:
      removeGridPosition in interface ObjectSpace
      Parameters:
      object - 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.