Java višeredni niz

1. Pregled

S obzirom na činjenicu da u Javi još ne postoji izvorna klasa višerednih nizova, pomalo je nezgodno stvoriti i koristiti višeredne nizove.

U ovom uputstvu prolazimo kroz nekoliko metoda za napraviti i koristiti višeredne nizove u Javi.

2. Dobivanje separatora linija

Svaki operativni sustav može imati svoj način definiranja i prepoznavanja novih linija. U Javi je vrlo lako dobiti separator linija operativnog sustava:

String newLine = System.getProperty ("line.separator");

Iskoristit ćemo ovo nova linija u sljedećim odjeljcima za stvaranje višerednih nizova.

3. Spajanje nizova

Spajanje nizova je jednostavna izvorna metoda koja se može koristiti za stvaranje višerednih nizova:

javni String stringConcatenation () {return "Zaposli se za život" .concat (newLine) .concat ("ili") .concat (newLine) .concat ("zauzmi umiranje.") .concat (newLine) .concat ("- Stephen King "); }

Korištenje operatora + još je jedan način postizanja iste stvari. Java kompajleri prevode concat () i operator + na isti način:

javni String stringConcatenation () {return "Zaposli se za život" + newLine + "ili" + newLine + "zauzeti se umiranjem." + newLine + "--Stephen King"; }

4. String Join

Uvedena Java 8 String # join, koji kao argumente uzima graničnik uz neke nizove. Vraća završni niz koji ima sve ulazne nizove spojene zajedno s graničnikom:

javni String stringJoin () {return String.join (newLine, "Zaposli se za život", "ili", "zauzmi umiranje.", "--Stephen King"); }

5. String Graditelj

StringBuilder je pomoćna klasa za izgradnju Nizs. StringBuilder je uveden u Javi 1.5 kao zamjena za StringBuffer. Dobar je izbor za izgradnju ogromnih žica u petlji:

javni String stringBuilder () {return new StringBuilder () .append ("Zaposli se za život") .append (newLine) .append ("ili") .append (newLine) .append ("zauzmi umiranje.") .append ( newLine) .append ("- Stephen King") .toString (); }

6. String Writer

StringWriter je još jedna metoda koju možemo koristiti za stvaranje niza s više linija. Ne trebamo nova linija ovdje, jer koristimo PrintWriter. The println funkcija automatski dodaje nove retke:

javni String stringWriter () {StringWriter stringWriter = novi StringWriter (); PrintWriter printWriter = novi PrintWriter (stringWriter); printWriter.println ("Zaposli se živeći"); printWriter.println ("ili"); printWriter.println ("zauzeti se umiranjem."); printWriter.println ("- Stephen King"); vratiti stringWriter.toString (); }

7. Guava stolar

Korištenje vanjske knjižnice samo za jednostavan zadatak poput ovog nema puno smisla, međutim, ako projekt već koristi knjižnicu u druge svrhe, možemo je iskoristiti. Na primjer, Googleova knjižnica Guava vrlo je popularna. Guava ima Stolar klasa koja je sposobna graditi višeredne nizove:

public String guavaJoiner () {return Joiner.on (newLine) .join (ImmutableList.of ("Zaposli se živeći", "ili", "zauzeti se umiranjem.", "- Stephen King")); }

8. Učitavanje iz datoteke

Java čita datoteke točno onakve kakve jesu. To znači da ako u tekstualnoj datoteci imamo višeredni niz, imat ćemo isti niz kada čitamo datoteku. Na Javi postoji puno načina za čitanje iz datoteke.

Zapravo je dobra praksa razdvajati duge nizove od koda:

public String loadFromFile () baca IOException {return new String (Files.readAllBytes (Paths.get ("src / main / resources / stephenking.txt"))); }

9. Korištenje IDE značajki

Mnogi moderni IDE podržavaju kopiranje / lijepljenje u više redaka. Eclipse i IntelliJ IDEA primjeri su takvih IDE-a. Jednostavno možemo kopirati naš višeredni niz i zalijepiti unutar dva dvostruka navodnika u ove IDE-ove.

Očito je da ova metoda ne radi za stvaranje niza u vremenu izvođenja, ali je brz i jednostavan način za dobivanje niza s više linija.

10. Zaključak

U ovom uputstvu naučili smo nekoliko metoda za izgradnju višerednih nizova u Javi.

Dobra vijest je da će Java 13 imati matičnu podršku za višeredne nizove putem blokova teksta. Nepotrebno je reći da će sve gore navedene metode i dalje raditi u Javi 13.

Kôd za sve metode u ovom članku dostupan je na Githubu.


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