我想知道,在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>();
}
}
谢谢!
答案 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。