我試圖重寫AssassinManager
的構造函數(見下文)。 此方法是一個構造函數,它接受ArrayList作爲參數。 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(超)
任何建議或解決方案是非常感謝!
你可能想要寫一個插入方法,但一般要添加到鏈接列表的唯一方法是使用一個屬性遍歷列表 –
node.addAll(播放器),嘗試這樣 – Hemakumar
你好@ cricket_007 :)所以你的意思是唯一的方法就是讓它在第一個版本中擁有它?我不熟悉你所指的 - 寫一個插入方法? – Ani