[英]How to add elements to a list object by iterating 3 different list objects in java?
[英]How to add elements to an object list in java
public class Bus{
private int seats;
private List<People> currentPeople;
public Bus(int seats){
this.seats = seats;
}
public void passengers(List<People> boarders, List<People> deboarders){
this.currentPeople.remove(deboarders);
this.currentPeople.add(boarders);
}
我正在尝试创建公交车上的人员列表。 我正在尝试从列表中删除 deboarders(下车乘客)并添加寄宿生(登机乘客)。 但是 Java 不允许我将寄宿生添加到 currentPeople 列表中。 People 是一个存储乘客姓名和票号的类。 这有什么帮助吗? 我一直试图解决这个问题几个小时。
要将对象集合添加到列表中,您需要使用addAll
:
this.currentPeople.addAll(boarders);
要从列表中删除一组对象,您需要使用removeAll
:
this.currentPeople.removeAll(deboarders);
请注意,为了比较并从列表中删除正确的元素, removeAll
使用了equals
方法。 所以你应该在你的People
类中实现equals
方法。
编辑:
People 类的equals
方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
People people = (People) o;
if (ticketNumber != people.ticketNumber) return false;
return name != null ? name.equals(people.name) : people.name == null;
}
不要忘记初始化currentPeople
列表,否则你会得到NullPointerException
。
将 add 更改为 addAll 并同样更改为删除。
正如 Federico 在评论中指出的那样,假设 People 已经实现了 equals 方法。
尝试 removeAll() 和 addAll() 方法,因为您将 Collection 作为参数传递。
不要忘记在构造函数中行尾的“;”。
this.currentPeople.removeAll(deboarders);
this.currentPeople.addAll(boarders);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.