Java - generiraj slučajni niz

U ovom uputstvu pokazat ćemo kako generirati slučajni niz u Javi - prvo koristeći standardne Java knjižnice, zatim koristeći inačicu Java 8 i na kraju knjižnicu Apache Commons Lang.

Ovaj je članak dio serije "Java - Povratak na osnovno" ovdje na Baeldungu.

1. Generirajte slučajni neograničeni niz s običnom Java

Krenimo jednostavno i generirajmo slučajno Niz ograničeno na 7 znakova:

@Test javna praznina givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect () {bajt [] niz = novi bajt [7]; // duljina je ograničena sa 7 novih Random (). nextBytes (niz); String generatedString = novi niz (niz, Charset.forName ("UTF-8")); System.out.println (generiraniString); }

Imajte na umu da novi niz neće biti ništa alfanumerički.

2. Generirajte nasumični ograničeni niz pomoću obične Jave

Dalje - pogledajmo stvaranje ograničenijeg slučajnog niza; generirat ćemo slučajni slučaj Niz pomoću malih alfabetskih slova i zadane duljine:

@Test javna praznina givenUsingPlainJava_whenGeneratingRandomStringBounded_thenCorrect () {int leftLimit = 97; // slovo 'a' int rightLimit = 122; // slovo 'z' int targetStringLength = 10; Slučajni slučajni = novi Random (); StringBuilder buffer = novi StringBuilder (targetStringLength); za (int i = 0; i <targetStringLength; i ++) {int randomLimitedInt = leftLimit + (int) (random.nextFloat () * (rightLimit - leftLimit + 1)); buffer.append ((char) randomLimitedInt); } String generatedString = buffer.toString (); System.out.println (generiraniString); }

3. Generiraj slučajni abecedni niz s Javom 8

Sada, iskoristimo Slučajne.ints - dodano u JDK 8 - za generiranje abecede Niz:

@Test javna praznina givenUsingJava8_whenGeneratingRandomAlphabeticString_thenCorrect () {int leftLimit = 97; // slovo 'a' int rightLimit = 122; // slovo 'z' int targetStringLength = 10; Slučajni slučajni = novi Random (); String generatedString = random.ints (leftLimit, rightLimit + 1) .limit (targetStringLength) .collect (StringBuilder :: new, StringBuilder :: appendCodePoint, StringBuilder :: append) .toString (); System.out.println (generiraniString); }

4. Generiraj slučajni alfanumerički niz s Javom 8

A onda možemo proširiti svoj skup znakova kako bismo dobili alfanumerički broj Niz:

@Test javna praznina givenUsingJava8_whenGeneratingRandomAlphanumericString_thenCorrect () 

Primijetite upotrebu filtar gornjom metodom izostaviti Unicode znakove između 65 i 90 - kako bi se izbjegli znakovi izvan raspona.

5. Generirajte ograničeni slučajni niz pomoću Apache Commons Lang-a

Biblioteka Commons Lang iz Apache-a puno pomaže kod slučajnog generiranja nizova. Pogledajmo generirajući ograničenu Niz koristeći samo slova:

@Test javna praznina givenUsingApache_whenGeneratingRandomStringBounded_thenCorrect () {int length = 10; boolean useLetters = true; boolean useNumbers = false; String generatedString = RandomStringUtils.random (duljina, upotreba slova, upotreba brojeva); System.out.println (generiraniString); }

Dakle - umjesto sa svim kodom niske razine u primjeru Jave - ovaj se radi s jednostavnom jednorednom linijom.

6. Generirajte abecedni niz pomoću Apache Commons Lang

Još jedan vrlo jednostavan primjer - ovaj put ograničen Niz sa samo abecednim znakovima, ali bez prosljeđivanja logičkih zastavica u API:

@Test javna praznina givenUsingApache_whenGeneratingRandomAlphabeticString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphabetic (10); System.out.println (generatedString); }

7. Generiraj alfanumerički niz pomoću Apache Commons Lang-a

I na kraju - isti slučajno ograničeni Niz ali ovaj put - brojčano:

@Test javna praznina givenUsingApache_whenGeneratingRandomAlphanumericString_thenCorrect () {String generatedString = RandomStringUtils.randomAlphanumeric (10); System.out.println (generiraniString); }

I evo ga - stvaranje ograničenih i neomeđenih nizova s običnom Java, inačicom Java 8 ili Apache Commons Library.

8. Zaključak

Kroz različite metode implementacije uspjeli smo generirati vezane i nevezane nizove, koristeći običnu Javu, inačicu Java 8 ili Apache Commons Library.

U ovim smo primjerima Java koristili java.util.Slučajno, ali jedna točka vrijedna spomena je da nije kriptografski sigurna. Razmislite o upotrebi java.security.SecureRandom umjesto za sigurnosno osjetljive programe.

Provedba svih ovih primjera i isječaka može se naći u projektu GitHub. Ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti.