문제의 가능한 해결책은 클래스의 두 목록에있는 값을 래핑하는 것입니다. 그러던 어느 목록에 그 클래스의 객체를 추가하고 그 셔플, 예를 들면 :
public class Test {
public static void main(String[] args) {
Random rnd = new Random();
int seed = rnd.nextInt();
rnd.setSeed(seed);
List<Pair> pairs = new ArrayList<Pair>();
pairs.add(new Pair(1, "else"));
pairs.add(new Pair(2, "bar"));
pairs.add(new Pair(3, "pair"));
Collections.shuffle(pairs, rnd);
for (Pair pair : pairs) {
System.out.println(pair.drawable + " " + pair.sequence);
}
}
}
class Pair {
int drawable;
CharSequence sequence;
Pair(int drawable, CharSequence sequence) {
this.drawable = drawable;
this.sequence = sequence;
}
}
이 목록을 주문한 다른 발생합니다 반복적으로 코드를 실행하지만, 값은 여전히 짝됩니다.
'목록이 일치해야 함'이란 무엇을 의미합니까? –
목록은 두 번째로 섞여 있지만 일치하지는 않습니다. 처음으로 그들이 섞여서 그들이 짝을 지을 때. 일치하는 말은 목록 1의 행 0은 섞인 후 어디로 전환 되든 관계없이 항상 목록 2의 행 0과 일치해야한다는 의미입니다. – ez4nick
그래서 당신을 올바르게 이해한다면, 당신은 무작위로 두리스트를 뒤섞고 있지만 같은 결과를 기대할 수 있습니까? shuffle의 동작이 반복적이어서는 안되기 때문에 매우 위험합니다. 한 목록을 섞거나 다른 목록을 동시에 셔플하는 등의 다른 메커니즘을 사용하는 것이 좋습니다. –