问题描述
我正在寻找使我的矿车对象充当节点的方式,以便它们可以将自己从列表中删除,但是我担心当前的代码设计会造成麻烦。
我认为其原因是因为<T extends MineCart>
与<MineCart>
和public class MyCustomLinkedList<T extends MineCart> implements Iterable<T> {
//... your typical list methods (e.g. add/remove etc)
public static class Node<T> {
private T item;
private Node<T> prev,next;
public Node(T item,Node<T> prev,Node<T> next) {
this.item = item;
this.prev = prev;
this.next = next;
}
}
}
不同。
我不是在寻找有关如何编写remove方法的答案,而是在寻找解决方案,以便MineCart对象可以像一个节点一样工作。
希望获得一些有关如何解决此问题的建议。
链接列表(仅显示相关部分)
public abstract class MineCart implements Comparable<MineCart> {
public MineCart nextCart;
public MineCart prevCart;
public MineCart getNextMineCart() {
// and then do something like this:
// return this.next;
// or return nextCart;
}
}
MineCart类(仅显示相关部分)
cd packageA
npm link
cd packageB
npm link packageA
// Now I have link packageB as well,so that I can use in packageC. so I did below
cd packageB
npm link
// Above command throws error saying packageA not found
解决方法
要让MineCart从列表中删除自己,请执行以下操作:
public abstract class MineCart implements Comparable<MineCart> {
public void remove() {
prevCart.nextCart=nextCart;
}
}
之前:
[cart1] - [cart2] - [cart3]
cart2.remove()
之后:
[cart1] - [cart3]
[cart2]
由于MineCart知道其邻居,因此您不需要Node类。