Java - Dapatkan Item / Elemen Rawak Dari Senarai

1. Pengenalan

Memilih elemen Senarai rawak adalah operasi yang sangat asas tetapi tidak begitu jelas untuk dilaksanakan. Dalam artikel ini, kami akan menunjukkan cara yang paling berkesan untuk melakukannya dalam konteks yang berbeza.

2. Memilih Item / Item Rawak

Untuk mendapatkan item rawak dari contoh Senarai , anda perlu menghasilkan nombor indeks rawak dan kemudian mengambil item dengan nombor indeks yang dihasilkan ini menggunakan kaedah List.get () .

Perkara penting di sini adalah ingat bahawa anda tidak boleh menggunakan indeks yang melebihi ukuran Senarai anda .

2.1. Item Rawak Tunggal

Untuk memilih indeks rawak, anda boleh menggunakan kaedah Random.nextInt (int terikat) :

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

Daripada kelas Rawak , anda selalu boleh menggunakan kaedah statik Math.random () dan mengalikannya dengan saiz senarai ( Math.random () menghasilkan nilai rawak berganda antara 0 (inklusif) dan 1 (eksklusif), jadi ingatlah untuk memasukkannya ke int selepas pendaraban).

2.2. Pilih Indeks Rawak di Persekitaran Multithread

Semasa menulis aplikasi multithread menggunakan instance kelas Random tunggal , mungkin menghasilkan nilai yang sama untuk setiap proses yang mengakses instance ini. Kami sentiasa dapat membuat instance baru per thread dengan menggunakan kelas ThreadLocalRandom khusus :

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

2.3. Pilih Item Rawak Dengan Pengulangan

Kadang-kadang anda mungkin mahu memilih beberapa elemen dari senarai. Ia cukup mudah:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat() { Random rand = new Random(); List givenList = Arrays.asList("one", "two", "three", "four"); int numberOfElements = 2; for (int i = 0; i < numberOfElements; i++) { int randomIndex = rand.nextInt(givenList.size()); String randomElement = givenList.get(randomIndex); } }

2.4. Pilih Item Rawak Tanpa Pengulangan

Di sini, anda perlu memastikan elemen tersebut dikeluarkan dari senarai setelah dipilih:

public void givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat() { Random rand = new Random(); List givenList = Lists.newArrayList("one", "two", "three", "four"); int numberOfElements = 2; for (int i = 0; i < numberOfElements; i++) { int randomIndex = rand.nextInt(givenList.size()); String randomElement = givenList.get(randomIndex); givenList.remove(randomIndex); } }

2.5. Pilih Siri Rawak

Sekiranya anda ingin mendapatkan rangkaian elemen rawak, kelas Utiliti koleksi mungkin berguna:

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

3. Kesimpulannya

Dalam artikel ini, kami mengkaji cara yang paling cekap semasa mengambil unsur-unsur rawak daripada Senarai instanc e untuk senario yang berbeza .

Contoh kod boleh didapati di GitHub.