java - 将对象添加到链表
问题描述
我需要实现 2 种方法的组合,将 wagon 对象添加到 wagon 的链表中。但我不明白如何构建它。每个 wagon 对象都有一个引用下一个 wagon 的属性(开始时为 null)。所以我想我必须在添加新货车时更改该参考。但是我怎么知道在哪里以及如何添加货车以及我如何在其他 2 人之间获得货车......如果可以添加火车是由公共方法检查但我如何实际添加带有辅助方法的火车? 还是我真的把它放在机车类?
我不能把危险品=真正的货车和客运车放在一起,客运车总是在火车的起点
package edu.hm.cs.swe2.trains;
public class Wagon {
private int wagonNumber;
private boolean isPassengerWagon;
private boolean carriesDangerousGoods;
public Wagon nextWagon;
public Wagon(boolean isPassengerWagon, boolean carriesDangerousGoods) {
if (isPassengerWagon == true && carriesDangerousGoods == true) {
this.carriesDangerousGoods = false;
System.out.println("passengerwagon cant handle dangerous goods");
} else
this.isPassengerWagon = isPassengerWagon;
this.carriesDangerousGoods = carriesDangerousGoods;
this.setWagonNumber(0);
this.setNextWagon(null);
}
public boolean isPassengerWagon() {
return isPassengerWagon;
}
public boolean isCarriesDangerousGoods() {
return carriesDangerousGoods;
}
public void setWagonNumber(int wagonNumber) {
this.wagonNumber = wagonNumber;
}
public void setNextWagon(Wagon nextWagon) {
this.nextWagon = nextWagon;
}
public void printWagon(int level) {
if (level == 3) {
if (nextWagon == null)
System.out.println("**********");
} else if (level == 2) {
if (this.isPassengerWagon == false && this.carriesDangerousGoods == true) {
System.out.println("* f" + this.wagonNumber + " dg *");
} else if (this.isPassengerWagon == false && this.carriesDangerousGoods == false) {
System.out.println("* f" + this.wagonNumber + " *");
} else if (this.isPassengerWagon == true) {
System.out.println("* p" + this.wagonNumber + " *");
}
} else if (level == 1) {
System.out.println("**********->");
} else if (level == 0) {
System.out.println(" *** *** ");
}
}
public boolean trainCarriesDangerousGoods() {
if (this.carriesDangerousGoods == true) {
return true;
} else if (this.nextWagon == null) {
return false;
} else {
return nextWagon.trainCarriesDangerousGoods();
}
}
public boolean trainHasPassengerWagons() {
if (this.isPassengerWagon == true) {
return true;
} else if (this.nextWagon == null) {
return false;
} else {
return nextWagon.trainHasPassengerWagons();
}
}
public Wagon addWagon(Wagon newWagon) {
if (this.trainCarriesDangerousGoods() == true && newWagon.isPassengerWagon() == true) {
System.out.println("cant add Passenger wagon to a train with dangerous goods");
}
if (newWagon.carriesDangerousGoods == true && this.trainHasPassengerWagons() == true) {
System.out.println("cant add dangerous goods to a train with passengerwaggons");
} else {
addWagon(this.wagonNumber, newWagon);
}
return newWagon;
}
private void addWagon(int wagonNumber, Wagon newWagon) {
}
}
package edu.hm.cs.swe2.trains;
public class Locomotive {
public int locomotiveCount;
public int steamLocomotiveCount;
MotivePower Propulsion;
public Locomotive(MotivePower Propulsion) {
this.Propulsion = Propulsion;
locomotiveCount++;
}
}
解决方案
你Wagon
不应该指向下一个Wagon
。Node
在LinkedList<T>
具有下一个指针以及其他指针的类中创建一个内部类。该类Node
应类似于以下内容:
class Node {
T object;
Node next;
Node previous; // optional depending on linked list type.
}
将LinkedList
是类型Wagon
。
例如LinkedList<Wagon> list = new LinkedList<>();
,Wagon
实例将被放置在object
节点的字段中。
推荐阅读
- java - 在我添加 throws ParseException 之后,仍然出现解析异常,为什么?
- python - 在不知道其键的情况下按值对嵌套字典列表进行排序 [Python]
- service - 从多个连接服务器重新启动多个服务
- cocoscreator - Cocos Creator:将节点位置转换为 UILocation
- c - 如何使用函数更改数组中的值
- spring-boot - 在 application.properties 中启用调试后在 pom.xml 中出现错误
- python - TypeError: __init__() 接受 1 个位置参数,但给出了 2 个 - 由 numPy 创建堆栈类时出现错误
- sql - 加入未嵌套的值 GoogleSQL
- python - 什么是 R 函数 %in% 的 pandas 等价物?
- reactjs - gatsby 多个markdown文件夹的多个收集路线