1

Processingで、オブジェクトの一部として配列を含める方法を考えていました。「ノード」という名前のオブジェクトがあり、それに接続されている他のノードのすべての ID のリストを含めたいとします。このリストの長さは可変であることに注意してください。つまり、1 つのノードを 2 つまたは 7 つの異なる他のノードに接続できます。また、そのオブジェクト内の特定の配列にアクセスするにはどうすればよいでしょうか?

ここに私が取り組んでいるいくつかのコードがあります:

void setup(){
  size(200,200);
  Node node1 = new Node(color(255,0,0),40,80,2,0,.5,5,5,0);
  int neighbor = 6;
  node1.neighbors.add(neighbor);
}

void draw(){

}

class Node {
  Set<Node> neighbors;
  color c;
  float xpos;
  float ypos;
  float xspeed;
  float yspeed;
  float damp;
  float ForceX;
  float ForceY;
  int id;

  // The Constructor is defined with arguments.
  Node(color tempC, float tempXpos, float tempYpos, float tempXspeed, float tempYspeed, float tempDamp, float tempForceX, float tempForceY, int id_temp) {
    c = tempC;
    xpos = tempXpos;
    ypos = tempYpos;
    xspeed = tempXspeed;
    yspeed = tempYspeed;
    damp = tempDamp;
    ForceX = tempForceX;
    ForceY = tempForceY;
    id = id_temp;
    neighbors = new HashSet<Node>();
  } 
}

ありがとう!

4

2 に答える 2

2

配列は、他の var と同じようにクラスに含めることができます。

    class Node{
       int[] array;
       Node (int[] _array){
           array = _array;
           }
        /// all he stuff
    }

しかし、オブジェクトは同じタイプの他のオブジェクトを「認識する」ことはできないと思います。おそらく、コンストラクターで Node の配列を取る他のクラス Nodes、またはサイズが可変でなければならない ArrayList が必要です。または、draw() で Node のセットを処理する必要があると思います。

于 2012-10-07T16:40:04.963 に答える
1

あなたはグラフを説明しています。グラフ クラスは次のようになります。

class Node {
    Set<Node> neighbors = new HashSet<Node>();
}

addNeighbor(Node neighbor)、isNeighbor(Node x) { return neighbors.contains(x); などのメソッドを作成するとよいでしょう。}など

IDについて説明しましたが、他のノードをメモリにロードする必要があると仮定すると、この方法の方が効率的です。Set here コンテナーは、他のノードへの参照 (C++ ポインターなど) を行います。

ID と整数のみが必要な場合は、Set を実行することもできます。

于 2012-10-08T04:19:19.687 に答える