Trong một trò chơi tôi có một danh sách các cầu thủ, chúng ta hãy nói như thế này:Sao chép một Iterator trong Java?
LinkedList<String> players = new LinkedList<String>();
Tôi muốn để cho mỗi người chơi tương tác với nhau của các cầu thủ khác, vì vậy tôi viết hai vòng lồng nhau:
Iterator<String> i1 = players.iterator();
while (i1.hasNext()) {
String p1 = i1.next();
Iterator<String> i2 = players.iterator();
// But I want to do this: Iterator<String> i2 = i1.clone();
while (i2.hasNext()) {
String p2 = i2.next();
System.out.println("Interact: " + p1 + ", " + p2);
}
}
Vì tôi chỉ muốn mỗi cặp người chơi tương tác một lần, tôi muốn bắt đầu vòng lặp bên trong với trình phát sau trình phát hiện tại của vòng lặp bên ngoài. Vì vậy, tôi muốn sao chép các iterator, nhưng điều đó không biên dịch.
Vì vậy, tôi nên làm gì để thay thế?
Tại sao không chỉ sử dụng 'ArrayList' thay thế? Một thuật toán sử dụng các vị trí sẽ là tầm thường với cấu trúc dữ liệu đó. –
Điều này có dẫn đến việc ghép nối trình phát A với A không? –
@Kirk: Có, ArrayList sẽ hoạt động, nhưng vì tôi có thể phải chèn và xóa người chơi ở giữa danh sách, tôi muốn một LinkedList. –