如何在Processing中包含和访问对象中的数组

时间:2012-10-07 05:58:05

标签: arrays object processing

我想知道,在Processing中,如何将数组作为对象的一部分包含在内。假设我有一个名为“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>();
  } 
}

谢谢!

2 个答案:

答案 0 :(得分:2)

数组可以像任何其他var一样包含在类中:

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

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

答案 1 :(得分:1)

您正在描述图表。图表类应如下所示:

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

您可能想要创建方法,例如addNeighbor(节点邻居),isNeighbor(节点x){return neighbors.contains(x);等等。

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

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