Java - Véletlen elem / elem letöltése listáról

1. Bemutatkozás

Véletlenszerű kiválasztása Lista elem nagyon alapvető művelet, de nem annyira nyilvánvaló végrehajtani. Ebben a cikkben bemutatjuk ennek leghatékonyabb módját a különböző összefüggésekben.

2. Véletlenszerű tétel / elemek kiválasztása

Annak érdekében, hogy véletlenszerű elemet kapjon a Lista Például generálnia kell egy véletlenszerű indexszámot, majd a létrehozott indexszám segítségével be kell hoznia egy elemet List.get () módszer.

A legfontosabb itt az, hogy ne feledje, hogy nem szabad olyan indexet használni, amely meghaladja az Ön indexét Lista méret.

2.1. Egyetlen véletlenszerű tétel

A véletlenszerű index kiválasztásához használhatja Random.nextInt (int kötött) módszer:

public void givenList_shouldReturnARandomElement () {List givenList = tömbök.asList (1, 2, 3); Random rand = új Random (); int randomElement = megadottList.get (rand.nextInt (megadottList.size ())); }

Ahelyett Véletlen osztályban, mindig használhat statikus módszert Math.random () és megszorozzuk a lista méretével (Math.random () generál Kettős véletlenszerű érték 0 (beleértve) és 1 (kizáró) között, ezért ne felejtse el eldobni int szorzás után).

2.2. Válassza a Véletlenszerű index lehetőséget a többszálas környezetben

Többszálas alkalmazások írásakor a single használatával Véletlen osztálypéldány, ugyanazt az értéket eredményezheti, ha minden folyamat eléri ezt a példányt. Mindig létrehozhatunk egy új példányt szálanként egy dedikált használatával ThreadLocalRandom osztály:

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

2.3. Válassza a Véletlenszerű elemek ismétléssel lehetőséget

Néha érdemes néhány elemet kiválasztania a listából. Ez egészen egyszerű:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat () {Random rand = new Random (); List givenList = Arrays.asList ("egy", "kettő", "három", "négy"); int számOfElements = 2; for (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (megadottList.size ()); String randomElement = megadottList.get (randomIndex); }}

2.4. Válassza a Véletlenszerű elemek ismétlés nélkül lehetőséget

Itt meg kell győződnie arról, hogy az elem eltávolításra került a listából a kiválasztás után:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat () {Random rand = new Random (); List givenList = Lists.newArrayList ("egy", "kettő", "három", "négy"); int számOfElements = 2; for (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (megadottList.size ()); String randomElement = megadottList.get (randomIndex); megadottList.remove (randomIndex); }}

2.5. Válassza a Véletlenszerű sorozat lehetőséget

Ha véletlenszerű elemsorozatot szeretne kapni, Gyűjtemények az utils osztály hasznos lehet:

public void givenList_whenSeriesLengthChosen_shouldReturnRandomSeries () {List givenList = Lists.newArrayList (1, 2, 3, 4, 5, 6); Collections.shuffle (adottList); int randomSeriesLength = 3; List randomSeries = megadottList.subList (0, randomSeriesLength); }

3. Következtetés

Ebben a cikkben feltártuk a véletlenszerű elemek lekérésének leghatékonyabb módját a Lista instance különböző forgatókönyvekhez.

Kódpéldák találhatók a GitHub-on.


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