我目前被困在代码的特定部分。对于我的班级,我们将创建一个包含载人或货物的棚车的火车。我们使用泛型来定义棚车是否可以载人或载货。然后我们将个人/货物加载到棚车上,如果它与已经在棚车上的人具有相同的字符串“ID”,那么我们记录一个错误并且不加载那个人/货物。这就是我遇到麻烦的地方。我一生都无法弄清楚如何比较他们的“ID”以查看它们是否相等。以下是我到目前为止的代码,
package proj5;
public class Person implements Comparable<Person> {
private String id;
private String name;
private int age;
public Person(String id, String name, int age){
this.id = id;
this.id = id;
this.name = name;
this.age = age;
}
public Person(String id){
this.id = id;
}
public String getId(){
return id;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String toString(){
String str = " " + "ID: " + id + " " + " Name: " + name + " " + " Age: " + age;
return str;
}
public int compareTo(Person p) {
int result = this.id.compareTo(p.getId());
return result;
}
}
package proj5;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class Boxcar<T extends Comparable<T>> {
private ArrayList<T> boxcar;
private int maxItems;
private int boxcarID;
public Boxcar(){
boxcar = new ArrayList<T>();
}
public void load(T thing){
for(int i = 0; i < boxcar.size(); i++){
if(boxcar.size() < maxItems && !boxcar.get(i).equals(thing)){
boxcar.add(thing);
System.out.println(boxcar.get(i));
}
else{
boxcar.remove(thing);
}
}
Collections.sort(boxcar);
}
public int getBoxcarId(){
return boxcarID;
}
public int getMaxItems(){
return maxItems;
}
public void setMaxItems(int i){
maxItems = i;
}
public void unload(T thing){
for(T item : boxcar){
if(item.equals(thing)){
boxcar.remove(item);
}
}
}
public List<T> getBoxcar(){
return boxcar;
}
public String toString(){
String str = "";
for(T item : boxcar){
str += item + "\n";
}
return str;
}
}
问题出在我的加载功能上。我不知道如何比较他们的ID。为澄清起见,对象 ID 是字符串。我还有其他课程,但我只包括了我认为必要的课程。如果您需要更多文件,我很乐意提供。我已经坚持了几个小时,希望有任何帮助!非常感谢您!
编辑:我尝试使用 Collections API 中的 contains() 方法,但为什么这不起作用?听起来它会完美运行。