1

我想知道,在处理中,如何将数组包含为对象的一部分。假设我有一个名为“Node”的对象,并希望它包含它所连接的其他节点的所有 ID 的列表。请注意,此列表的长度可以是可变的。也就是说,一个节点可以连接到两个或七个不同的其他节点。我将如何访问该对象中的特定数组?

这是我正在使用的一些代码:

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
    }

但我认为一个对象不能“意识到”其他相同类型的对象。也许您需要一个其他类 Nodes,它在构造函数中接受一个 Node 数组,或者一个 ArrayList,因为大小必须是可变的。或者我担心你必须处理 draw() 中的节点集。

于 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); }, ETC。

您描述了 id,但假设您必须将其他节点加载到内存中,这种方法更有效。Set here 容器引用(例如 C++ 指针)到其他节点。

如果你想要 ids 并且只有整数,你也可以做一个 Set 。

于 2012-10-08T04:19:19.687 回答