クラス FastGridTree<T>

java.lang.Object
net.trpfrog.medipro_game.data_structures.FastGridTree<T>
型パラメータ:
T - 乗せるオブジェクトの型

public class FastGridTree<T>
extends java.lang.Object
2次元グリッド上にオブジェクトを配置するデータ構造。 このデータ構造を使うと長方形の区間について高速に処理を行うことができます。 また、同一の座標に複数のオブジェクトを乗せることができます。 高速な部分木の切り出しのためのTreeMapとデータ重複時用のLinkedListにより実装されています。
作成者:
つまみ
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ 説明
    FastGridTree()  
  • メソッドの概要

    修飾子とタイプ メソッド 説明
    boolean contains​(T object)  
    java.util.List<T> get​(int x, int y)
    グリッド(x,y)の要素をリストとして取得します。
    java.util.TreeMap<java.lang.Integer,​java.util.TreeMap<java.lang.Integer,​java.util.LinkedList<T>>> getRawTree()
    この実装に使われている生のTreeMapを取得します。
    void put​(int x, int y, T object)
    グリッド(x,y)にオブジェクトを追加します。
    void remove​(int x, int y, T object)
    グリッド(x,y)から指定したオブジェクトを削除します。
    void removeAll​(int x, int y)
    グリッド(x,y)から全てのオブジェクトを削除します。
    void replace​(int x, int y, T object)
    グリッド(x,y)にオブジェクトを追加します。
    java.util.stream.Stream<T> stream()
    グリッド全体の要素をStreamとして取得します。
    java.util.stream.Stream<T> stream​(int x, int y)
    グリッド(x,y)の要素をStreamとして取得します。
    java.util.stream.Stream<T> stream​(java.awt.Rectangle range)
    指定した範囲に含まれる要素のStreamを返します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • FastGridTree

      public FastGridTree()
  • メソッドの詳細

    • put

      public void put​(int x, int y, T object)
      グリッド(x,y)にオブジェクトを追加します。 既にオブジェクトが存在した場合も元の要素を消さずに追加されます。 計算量は O(log(W)+log(H)) です。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
      object - 追加したいオブジェクト
    • replace

      public void replace​(int x, int y, T object)
      グリッド(x,y)にオブジェクトを追加します。 既にオブジェクトが存在した場合は元の要素を削除します。 計算量は O(log(W)+log(H)) です。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
      object - 追加したいオブジェクト
    • remove

      public void remove​(int x, int y, T object)
      グリッド(x,y)から指定したオブジェクトを削除します。 計算量は O(log(W)+log(H)) です。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
      object - 削除したいオブジェクト
    • removeAll

      public void removeAll​(int x, int y)
      グリッド(x,y)から全てのオブジェクトを削除します。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
    • get

      public java.util.List<T> get​(int x, int y)
      グリッド(x,y)の要素をリストとして取得します。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
      戻り値:
      グリッド上に存在する要素のリスト
    • stream

      public java.util.stream.Stream<T> stream()
      グリッド全体の要素をStreamとして取得します。
      戻り値:
      グリッド上に存在する要素のリスト
    • stream

      public java.util.stream.Stream<T> stream​(int x, int y)
      グリッド(x,y)の要素をStreamとして取得します。
      パラメータ:
      x - グリッドのx座標
      y - グリッドのy座標
      戻り値:
      グリッド上に存在する要素のリスト
    • stream

      public java.util.stream.Stream<T> stream​(java.awt.Rectangle range)
      指定した範囲に含まれる要素のStreamを返します。
      計算量はフィールド全体の大きさを (H, W) として O(log(H) + log(W) + range.h * range.w) です。
      パラメータ:
      range - オブジェクトが含まれている範囲
      戻り値:
      範囲内に存在するオブジェクトのStream
    • contains

      public boolean contains​(T object)
    • getRawTree

      public java.util.TreeMap<java.lang.Integer,​java.util.TreeMap<java.lang.Integer,​java.util.LinkedList<T>>> getRawTree()
      この実装に使われている生のTreeMapを取得します。
      戻り値:
      実態のTreeMap