Jak randomizować dwie ArrayList w ten sam sposób?

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.

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.