,의는 다음과 같이 가정 해 봅시다 :자바에서 반복자를 복제 하시겠습니까? 나는 플레이어의 목록을 가지고 게임에
LinkedList<String> players = new LinkedList<String>();
을 나는 각각의 플레이어가 다른 플레이어의 각각 상호 작용할 수 있도록하려면, 그래서 두 개의 중첩 루프 쓰기 :
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);
}
}
을
각 플레이어 쌍이 한 번만 상호 작용하기를 원하기 때문에 바깥 쪽 루프의 현재 플레이어 다음에 플레이어와 함께 안쪽 루프를 시작하고 싶습니다. 그래서 반복자를 복제하고 싶지만 컴파일되지 않습니다.
대신 무엇을해야합니까?
대신 'ArrayList'을 사용하지 않으시겠습니까? 위치를 사용하는 알고리즘은 해당 데이터 구조에서 사소한 것입니다. –
그러면 A와 A가 페어링되지 않을까요? –
@Kirk : 예, ArrayList가 작동하지만 목록의 중간에 플레이어를 삽입하고 제거해야 할 수도 있기 때문에 LinkedList를 원합니다. –