クラス 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() -
メソッドの概要
修飾子とタイプ メソッド 説明 booleancontains(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を取得します。voidput(int x, int y, T object)グリッド(x,y)にオブジェクトを追加します。voidremove(int x, int y, T object)グリッド(x,y)から指定したオブジェクトを削除します。voidremoveAll(int x, int y)グリッド(x,y)から全てのオブジェクトを削除します。voidreplace(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
グリッド(x,y)にオブジェクトを追加します。 既にオブジェクトが存在した場合も元の要素を消さずに追加されます。 計算量は O(log(W)+log(H)) です。- パラメータ:
x- グリッドのx座標y- グリッドのy座標object- 追加したいオブジェクト
-
replace
グリッド(x,y)にオブジェクトを追加します。 既にオブジェクトが存在した場合は元の要素を削除します。 計算量は O(log(W)+log(H)) です。- パラメータ:
x- グリッドのx座標y- グリッドのy座標object- 追加したいオブジェクト
-
remove
グリッド(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
グリッド(x,y)の要素をリストとして取得します。- パラメータ:
x- グリッドのx座標y- グリッドのy座標- 戻り値:
- グリッド上に存在する要素のリスト
-
stream
グリッド全体の要素をStreamとして取得します。- 戻り値:
- グリッド上に存在する要素のリスト
-
stream
グリッド(x,y)の要素をStreamとして取得します。- パラメータ:
x- グリッドのx座標y- グリッドのy座標- 戻り値:
- グリッド上に存在する要素のリスト
-
stream
指定した範囲に含まれる要素のStreamを返します。
計算量はフィールド全体の大きさを (H, W) として O(log(H) + log(W) + range.h * range.w) です。- パラメータ:
range- オブジェクトが含まれている範囲- 戻り値:
- 範囲内に存在するオブジェクトのStream
-
contains
-
getRawTree
public java.util.TreeMap<java.lang.Integer,java.util.TreeMap<java.lang.Integer,java.util.LinkedList<T>>> getRawTree()この実装に使われている生のTreeMapを取得します。- 戻り値:
- 実態のTreeMap
-