我试图重写一个构造函数AssassinManager
(见下文)。此方法是一个以ArrayList作为参数的构造函数。ArrayList应该按照出现时的确切顺序将名称添加到对象中。每个新节点都应添加到链接列表的末尾。考虑到要使用的新属性,我不确定如何实现这一点。
第一版:
private static class AssassinNode {
private String player;
private String killer;
private AssassinNode next;
private AssassinNode(String name) {
this.player = name;
this.killer = null;
this.next = null;
}
}
private AssassinNode killring; // the head of the kill ring linked list - first link
private AssassinNode graveyard; // the head of the graveyard linked list - second link
public AssassinManager(ArrayList<String> players) {
if (players == null || players.isEmpty()) { throw new IllegalArgumentException(); }
killring = new AssassinNode(players.get(0)); // create first node - for the killring
AssassinNode node = killring;
for (int i = 1; i < players.size(); i++) { // Add a new node at the end of each killing
node.next = new AssassinNode(players.get(i));
node = node.next;
}
}
新版本:
private KillList killring;
private AssassinNodeData graveyard;
public AssassinManager(ArrayList<String> players) {
if (players == null || players.isEmpty()) { throw new IllegalArgumentException(); }
killring = new KillList(players.get(0));
KillList node = killring;
node.addAll(players);
}
KillList extends LinkedList<AssassinNodeData>
现在,我尝试不使用来实现相同的目的next
。
类之间的关系:KillList(子类)和AssassinNodeData(超类)
任何建议或解决方案,不胜感激!
如果您能够进行更改,则AssassinNode
可以这样进行。
public class AssassinNode {
private final String player;
private AssassinNode parent;
private AssassinNode child = null;
AssassinNode(String player, AssassinNode parent) {
this.player = player;
this.parent = parent;
addToParent(parent);
}
void setChild(AssassinNode child) {
this.child = child;
}
private void addToParent(AssassinNode parent) {
parent.setChild(this);
}
// other getters and code
}
。
public class AssassinManager {
LinkedList<AssassinNode> killring = new LinkedList<>();
public AssassinManager(List<String> players) {
if (players == null || players.isEmpty()) {
throw new IllegalArgumentException();
}
AssassinNode assassin = null;
for (String player : players) {
assassin = new AssassinNode(player, assassin);
killring.add(assassin);
}
}
public static void main(String[] args) {
List<String> players = Arrays.asList("eizo", "shay", "arno", "arbaaz");
AssassinManager manager = new AssassinManager(players);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句