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.