ペインにノードをプロットする演習で忙しいです。私の最初の目標は、100万のノードで作業し、それを1,500万まで増やすことです。
カスタムオブジェクトグラフがあり、このオブジェクトにエッジとノードを追加できます。各ノードオブジェクトには、呼び出してプロットできる楕円があり、エッジオブジェクトと同じです。現在、ノードのランダムな位置を生成する関数があります。
現在、スクロールペインを使用して、ペインの周囲のパンを有効にし、すべてのノードを表示しています。
私が良い考えだと思ったのは、ハッシュマップを使用することでした
Map<String, ArrayList<Node>> mapX = new HashMap<String, ArrayList<Node>>();
Map<String, ArrayList<Node>> mapY = new HashMap<String, ArrayList<Node>>();
次のコードを使用して、ノードをハッシュマップに追加します。
int tempXFloor = (int)Math.floor(tempX);
ArrayList<Node> tempList = mapX.get(tempXFloor+"");
if(tempList == null){
tempList = new ArrayList<>();
}
tempList.add(node);
mapX.put(tempXFloor+"",tempList);
次に、パンしている間に現在の位置を取得し、床に配置して、マップにエントリが存在するかどうかを確認します。エントリが存在する場合は、ArrayList内のすべてのノードをnodesOnScreenに追加します。ノードOnScreenはArrayListタイプであり、パン中にノードをそのリストに追加します。同様に、画面外のノードはnodesOnScreen変数から削除されます。
ArrayListnodesOnScreenにあるノードのみをプロットします。
この件に関するガイダンスと、そのようなビッグデータ構造の処理方法をいただければ幸いです。私は正しい方向に進んでいますか、それともそれを行うための明白な「トリック」を逃していますか。