Java - Få tilfældigt element / element fra en liste

1. Introduktion

Vælg en tilfældig Liste element er en meget grundlæggende operation, men ikke så indlysende at implementere. I denne artikel viser vi den mest effektive måde at gøre dette på i forskellige sammenhænge.

2. Valg af et tilfældigt emne / emner

For at få en tilfældig vare fra en Liste For eksempel skal du generere et tilfældigt indeksnummer og derefter hente et element ved hjælp af dette genererede indeksnummer List.get () metode.

Nøglepunktet her er at huske, at du ikke må bruge et indeks, der overstiger dit Liste er størrelse.

2.1. Enkelt tilfældigt element

For at vælge et tilfældigt indeks kan du bruge Random.nextInt (int bundet) metode:

public void givenList_shouldReturnARandomElement () {List givenList = Arrays.asList (1, 2, 3); Tilfældig rand = ny Random (); int randomElement = givenList.get (rand.nextInt (givenList.size ())); }

I stedet for Tilfældig klasse, kan du altid bruge statisk metode Matematik tilfældig () og gang det med listen størrelse (Math.random () genererer Dobbelt tilfældig værdi mellem 0 (inklusive) og 1 (eksklusiv), så husk at kaste den til int efter multiplikation).

2.2. Vælg tilfældigt indeks i multithread-miljø

Når du skriver multithread-applikationer ved hjælp af singlen Tilfældig klasseinstans, kan resultere i at vælge samme værdi for hver proces, der får adgang til denne forekomst. Vi kan altid oprette en ny forekomst pr. Tråd ved hjælp af en dedikeret ThreadLocalRandom klasse:

int randomElementIndex = ThreadLocalRandom.current (). nextInt (listSize)% givenList.size ();

2.3. Vælg tilfældige genstande med gentagelser

Nogle gange vil du måske vælge nogle få elementer fra en liste. Det er ret ligetil:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat () {Random rand = new Random (); Liste givenList = Arrays.asList ("en", "to", "tre", "fire"); int numberOfElements = 2; for (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (givenList.size ()); Streng randomElement = givenList.get (randomIndex); }}

2.4. Vælg Tilfældige emner uden gentagelser

Her skal du sørge for, at elementet fjernes fra listen efter valg:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat () {Random rand = new Random (); Liste givenList = Lists.newArrayList ("en", "to", "tre", "fire"); int numberOfElements = 2; for (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (givenList.size ()); Streng randomElement = givenList.get (randomIndex); givenList.remove (randomIndex); }}

2.5. Vælg Tilfældig serie

I tilfælde af at du gerne vil opnå tilfældige serier af elementer, Samlinger utils klasse kan være praktisk:

offentlig ugyldighed givenList_whenSeriesLengthChosen_shouldReturnRandomSeries () {List givenList = Lists.newArrayList (1, 2, 3, 4, 5, 6); Collections.shuffle (givenList); int randomSeriesLength = 3; Liste randomSeries = givenList.subList (0, randomSeriesLength); }

3. Konklusion

I denne artikel udforskede vi den mest effektive måde at hente tilfældige elementer fra en Liste instance til forskellige scenarier.

Kodeeksempler kan findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found