我正在寻找一种方法,让我的minecart对象充当一个节点,这样它们就可以从列表中删除自己,但我担心当前的代码设计会给允许这样做带来麻烦。
我认为这是因为不同的类型:<T extends MineCart>
和<MineCart>
我不是在寻找如何编写remove方法的答案,而是在寻找一个解决方案,以便MineArt对象可以像节点一样工作。如果能就如何解决这个问题得到一些建议,我将不胜感激。
链接列表(只显示相关部分(
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;
}
}
}
MineArt类(仅显示相关部分(
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;
}
}
让MineArt从列表中删除自己:
public abstract class MineCart implements Comparable<MineCart> {
public void remove() {
prevCart.nextCart=nextCart;
}
}
之前:
[cart1] - [cart2] - [cart3]
cart2.remove((
之后:
[cart1] - [cart3]
[cart2]
由于MineArt知道它的邻居,所以您不需要Node类。