Uobičajene nizovne operacije u Javi

1. Uvod

Vrijednosti i operacije temeljene na nizovima prilično su česte u svakodnevnom razvoju, a bilo koji programer Java mora biti u stanju s njima se nositi.

U ovom uputstvu pružit ćemo kratke varalice Niz operacijama.

Uz to ćemo rasvijetliti razlike između jednako i "==" i između StringUtils # isBlank i #prazno je.

2. Pretvaranje znaka u niz

A ugljen predstavlja jedan znak u Javi. Ali u većini slučajeva trebamo Niz.

Pa krenimo s preobrazbom ugljens u Nizs:

String toStringWithConcatenation (konačni znak c) {return String.valueOf (c); }

3. Dodavanje žica

Još jedna često potrebna operacija je dodavanje nizova s ​​drugim vrijednostima, poput a ugljen:

String appendWithConcatenation (konačni prefiks niza, završni znak c) {prefiks vraćanja + c; }

Ostale osnovne vrste možemo dodati s StringBuilder također:

String appendWithStringBuilder (konačni prefiks niza, završni znak c) {return new StringBuilder (prefiks) .append (c) .toString (); }

4. Dobivanje znaka indeksom

Ako iz niza trebamo izdvojiti jedan znak, API pruža sve što želimo:

char getCharacterByIndex (konačni tekst niza, konačni int indeks) {return text.charAt (indeks); }

Budući da je a Niz koristi a char [] kao prateća struktura podataka, indeks počinje na nuli.

5. Rukovanje ASCII vrijednostima

Jednostavno se možemo prebacivati ​​između a ugljen i njegov numerički prikaz (ASCII) lijevanjem:

int asciiValue (završni znak sa znakom) {return (int) znak; } char fromAsciiValue (konačna int vrijednost) {Assert.isTrue (vrijednost> = 0 && vrijednost <65536, "vrijednost nije valjani znak"); povratna (char) vrijednost; }

Naravno, budući da je int je 4 nepotpisana bajta i a ugljen je 2 nepotpisana bajta, moramo provjeriti radimo li s vrijednostima pravnih znakova.

6. Uklanjanje cijelog razmaka

Ponekad se moramo riješiti nekih znakova, najčešće razmaka. A dobar način je koristiti zamjeni sve metoda s regularnim izrazom:

String removeWhiteSpace (konačni tekst niza) {return text.replaceAll ("\ s +", ""); }

7. Spajanje kolekcija u niz

Sljedeći uobičajeni slučaj je kada imamo neku vrstu Kolekcija i želite od njega stvoriti niz:

 String fromCollection (konačna zbirka zbirke) {return collection.stream (). Map (Objects :: toString) .collect (Collectors.joining (",")); }

Primijetite da Kolekcionari.druživanje omogućuje određivanje prefiksa ili sufiksa.

8. Dijeljenje niza

Ili s druge strane, možemo podijeliti niz razdjelnikom pomoću znaka podjela metoda:

String [] splitByRegExPipe (konačni tekst niza) return text.split ("\

Opet, ovdje koristimo regularni izraz, ovaj put za razdvajanje cijevi. Budući da želimo koristiti poseban znak, moramo mu pobjeći.

Druga mogućnost je korištenje Uzorak razred:

String [] splitByPatternPipe (konačni tekst niza) ")); 

9. Obrada svih likova kao streama

U slučaju detaljne obrade, možemo transformirati niz u IntStream:

IntStream getStream (konačni tekst niza) {return text.chars (); }

10. Referentna jednakost i jednakost vrijednosti

Iako žice izgledaju kao primitivni tip, nisu.

Stoga moramo razlikovati referentnu jednakost od jednakosti vrijednosti. Referentna jednakost uvijek podrazumijeva jednakost vrijednosti, ali općenito ne obrnuto. Prvo provjeravamo operacijom '==', a potonje s jednako metoda:

@Test public void whenUsingEquals_thenWeCheckForTheSameValue () {assertTrue ("Vrijednosti su jednake", novi String ("Test"). Jednako ("Test")); } @Test public void whenUsingEqualsSign_thenWeCheckForReferenceEquality () {assertFalse ("Reference nisu jednake", new String ("Test") == "Test"); }

Primijetite da su literali internirani u spremište nizova. Stoga ih prevodilac ponekad može optimizirati na istu referencu:

@Test public void whenTheCompileCanBuildUpAString_thenWeGetTheSameReference () {assertTrue ("Kompajler literaturu spaja", "Test" == "Te" + "st"); }

11. Prazan niz nasuprot praznog niza

Suptilna je razlika između isBlank i prazno je.

Niz je prazan ako jest null ili ima duljinu nula. Dok je niz prazan ako je null ili sadrži samo razmake:

@Test public void whenUsingIsEmpty_thenWeCheckForNullorLengthZero () {assertTrue ("null is empty", isEmpty (null)); assertTrue ("ništa nije prazno", isEmpty ("")); assertFalse ("razmak nije prazan", isEmpty ("")); assertFalse ("razmak nije prazan", isEmpty ("\ n")); assertFalse ("razmak nije prazan", isEmpty ("\ t")); assertFalse ("tekst nije prazan", isEmpty ("Bilo što!")); } @Test public void whenUsingIsBlank_thenWeCheckForNullorOnlyContainingWhitespace () {assertTrue ("null is blank", isBlank (null)); assertTrue ("ništa nije prazno", isBlank ("")); assertTrue ("razmak je prazan", isBlank ("\ t \ t \ t \ n \ r")); assertFalse ("test nije prazan", isBlank ("Bilo što!")); }

12. Zaključak

Žice su osnovna vrsta u svim vrstama aplikacija. U ovom smo tutorijalu naučili neke ključne operacije u uobičajenim scenarijima.

Nadalje, dali smo upute za detaljnije reference.

Napokon, puni kod sa svim primjerima dostupan je u našem GitHub spremištu.


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