ArrayList将空传递给函数

时间:2018-09-29 20:19:25

标签: java list arraylist

我什至不知道要问什么,但是我已经被困了几个小时了。我试图在bookFlight类中创建一个仅包含人或ArrayList(“伪装为客户端”)的对象(NodeReservation)。但是,此对象(NodeReservation)是使用空的ArrayList创建的。为什么会发生这种情况?

这是课程bookFlight的重要部分:

void bookFlight(ArrayList<Persone> group) {
    NodeReservation newReservation = new NodeReservation(new Group(group));

}

班组如下:

public class Group extends Client{
    ArrayList<Persone> group;

public Group(ArrayList<Persone> group) {
    this.group = new ArrayList<Persone>();
}

}

Client只是一个空类,因此我可以将其用于Person类(也扩展到Client),但两种类型的对象均以同一哈希表结尾。

NodeReservation类:

public class NodeReservation {
NodeReservation next;
Client client;

public NodeReservation(Client client) {
    this.client = client;
    next = null;
}

}

2 个答案:

答案 0 :(得分:2)

public Group(ArrayList<Persone> group) {
    this.group = new ArrayList<Persone>();
}

此代码完全忽略group参数。如果要复制它,则必须将其传递给ArrayList构造函数:

this.group = new ArrayList<>(group);

此后,group 字段将是与ArrayList 参数不同的group对象,但其中包含相同元素的顺序相同。从一个元素添加或删除元素不会影响另一个。

答案 1 :(得分:2)

Group的构造函数忽略传递给它的列表,仅创建一个空列表。您应该将参数传递给ArrayList构造函数,而不要忽略它:

public Group(ArrayList<Persone> group) {
    this.group = new ArrayList<Persone>(group);
    // Here ----------------------------^
}