Mam dwie listy plików arraylist
i imgList
, które są ze sobą powiązane, np. „H1.txt” związany z „e1.jpg”. Jak automatycznie randomizować listę imgList
według losowości fileList
? Podobnie jak w programie Excel, jeśli posortujemy określoną kolumnę, druga kolumna automatycznie pojawi się za nią?
String [] file = {"H1.txt","H2.txt","H3.txt","M4.txt","M5.txt","M6.txt"};
ArrayList<String> fileList = new ArrayList<String>(Arrays.asList(file));
String [] img = {"e1.jpg","e2.jpg","e3.jpg","e4.jpg","e5.jpg","e6.jpg"};
ArrayList<String> imgList = new ArrayList<String>(Arrays.asList(img));
//randomizowane pliki
Collections.shuffle(fileList);
output po randomizowaniu:
fileList = {"M4.txt","M6.txt","H3.txt","M5.txt","H2.txt","H1.txt"};
zamierzony wynik:
imgList = {"e4.jpg","e6.jpg","e3.jpg","e5.jpg","e2.jpg","e1.jpg"};
1 odpowiedź
Użyj dwukrotnie Collect.shuffle (),
z dwoma losowymi obiektami zainicjowanymi tym samym ziarnem:
long seed = System.nanoTime();
Collections.shuffle(fileList, new Random(seed));
Collections.shuffle(imgList, new Random(seed));
Użycie dwóch losowych obiektów z tym samym ziarnem zapewnia, że obie listy zostaną przetasowane dokładnie w ten sam sposób. Pozwala to na dwie osobne kolekcje.