Top 10 funkciók java 8 közül sokan nem beszélnek

Az új fichah Java 8 elhangzott elég sokat. Főként megvitassák áramkör Stream'y, egy új API dolgozó időben default-módszerek interfészek, fakultatív osztály és nincs állandó Generation.

De amellett, hogy a zsíros funkciók Java 8 sokat változott a standard könyvtár perifirii. Különösen sok módszer jelentősen egyszerűsíti a napi feladatok kerültek a meglévő osztályok. Körülbelül még ma, és beszélünk.

Tehát Top 10 legtöbbet beszélt funkciók nem Java 8. Menjünk.

String.join ()

De jobb későn, mint soha. Korábban meg kellett táncolni, vagy StringBuilder „om. Vagy, a legésszerűbb lehetőség, vagy használja a Guava commons-lang.

Egy másik lehetőség, hogy használja a patak és Collectors.joining ():

Ebben az esetben lehetővé válik, hogy az előszűrő üres string.

Map.computeIfAbsent () / getOrDefault () / merge () / putIfAbsent ()

Az életem érte, ha írsz a Java, akkor a projektben van egy kód, mint ez:

A lényeg egyszerű. Egy leképezés egy vonal egy számláló, hogy hány alkalommal találkoztunk ezen a vonalon. Csak nem szabad megfeledkezni, hogy inicializálja a helyzet térkép „és a nulla, és a virtuális gép akkor dobja NullPointerException.

A Java 8, ugyanaz a probléma egyszerűen megoldható:

Metód egyesítés egy kulcsot kap értéket és egy függvény, amely egyesíti a beállított érték már létezik a kijelzőn, ha van ilyen. Ha a kijelző egy előre meghatározott érték a kulcs nincs jelen, akkor megállapítja, hogy a megadott érték.

A rajongók egysoros, lehetőség van pohardkorney:

Hasonló funkciót, de egy másik összefüggésben, az adott módszereket:

  • computeIfAbsent () - értékét adja vissza a kijelzőn vagy egy billentyűt, vagy generál is, ha nem volt;
  • putIfAbsent () - hozzáadott értéket jelent a térkép csak akkor, ha nem volt ott. Ez a technika korábban csupán ConcurrentMap. most és térkép „is;
  • getOrDefault () - a név elég beszédes. Értékét adja vissza a kijelző, vagy át egy alapértelmezett értéket. Véleményem szerint az eljárás nem teljesen köznyelvi. Együttműködik a hiányzó értékeket Opcionális típus adunk hozzá. azt kell használni. Ezért Hozzáteszem eljárás: Opcionális getOptional (K) gombot. De ki vagyok én ...

ThreadLocal.withInitial ()

Azok, akik szorosan együttműködik multi-threading, nem jut el. Ezek vietnami veteránok, és még flashback az éjszaka, mint a kínzás. És ez a terv nem megijeszteni őket:

De most, mivel a lezárások könnyedén:

Files.lines () / readAllLines () / BufferedReader.lines ()

A Java 8 ez tette lehetővé, sokkal könnyebb elvégezni egy ilyen egyszerű feladat, mint olvasni vonal képet. Ez egy másik feladat, hogy a korábban szükséges a sok kódot. Most ez:

Perc unalmas. Módszer visszaadja a számtani átlagos osztály * SummaryStatistics nevezett getAverage (). bár pontosabb lenne getMean () név. A kifejezés azt jelenti, hogy pontosan leírja a számtani középértéket, míg az átlagos kifejezés a koncepció az átlagos értéke általában, és utalhat minden olyan intézkedés, a központi tendenciát (számtani átlag, medián, mértani átlag, üzemmód, stb). Érdemes megjegyezni, hogy még a dokumentációban getAverage () metódus a koncepció úgy tűnik azt jelenti: „Eredményül a számtani átlag rögzített értékek”.

Hasonló módszert adunk a BufferedReader osztályban. így most Stream'y keresztül elérhető bármely InputStream „a.

A paradoxon Comparator'a

Tegyük fel, hogy kell írni egy komparátor végrehajtás „és emelkedő rendezni tárgyakat. Általában komparátor a következő:

A kérdés csak az, hogy az, amit meg kell tennie, hogy a helyes sorrend? A tudósok szerint, ha azt a lehetőséget választja véletlenül, akkor tudod Körülbelül az esetek felében. A végén, csak két lehetőség van: vagy elvenni u2 u1, vagy fordítva.

A paradoxon abban rejlik, hogy az írási összehasonlító elsőre nem működik szinte soha. Ez végül minden mindig ugyanaz - flegma megjegyzést: „Ó, igen, rögtön vette rossz!”.

Szerencsére, most már nincs szükség. Az összehasonlító lehet gyűjteni a szar és botokkal, hanem hivatkozva a elemfüggvényei hasonló típusú vagy szervezetekkel, amelyeket szeretnénk rendezni.

PrimitiveIterator

Egyik korlátja a korábbi verziók a Java volt az a tény, hogy nem rendelkezik a standard bejáró felett primitív típusokat. De mint a referencia. Most ezek voltak a PrimitiveIterator felületen. valamint utódai: PrimitiveIterator.Of [Int | Long | Double]. Együtt a funkcionális kapcsolódási pontok a primitív típusok ez jó alapot dolgozó gyűjtemények primitív típusok nélkül autobox'a.

List.replaceAll ()

Elég kényelmes módszer, amely lehetővé teszi, hogy módosítsa az összes elemet a listából. Ha azt szeretnénk, hogy egy listát a húrok kisbetűs, mielőtt meg kellett írni valami ilyesmit:

Vagy egy fejlettebb változata:

Most meg lehet csinálni a következő:

Random.ints ()

Egy másik lehetőség, ami majdnem nem említik - van valami, hogy hozzon létre egy véletlen stream „véletlenszám a kívánt típusú és tartomány:

Vannak módszerek, hogy hozzon létre egy dupla 's (páros ()) és a hosszú' s (long ()).

LongAccumulator / LongAdder

Két osztály amelyek hatékonyabbak helyettesítő AtomicLong. LongAdder osztály lehetővé teszi, hogy végre atomi aritmetikai típusú hosszú. LongAccumulator elfogadja tetszőleges függvény felhalmozódás eredménye. Ez a függvény az aktuális érték a neki átadott halmozódik fel () metódus visszaadja az eredmény logikai kombinációja (hulladék) a két érték.

Amikor megkapta az eredményt az összes elem csökken egy közös eredmény. Az egész konyha hint számunkra, hogy a felhalmozási funkciót kell kommutatív és asszociatív. Ellenkező esetben az eredmény függ a fizikai műveletek sorrendjét, hogy az osztály nem garantált.

Nagy contention'e két osztály adatok gyorsabb lesz AtomicLong „, és annak a ténynek köszönhető, hogy a műveleteket nem hajt végre egy közös elem, és a csoport elemeit külön-külön. Ennek köszönhetően, a „huszárok nem jön fúj, mert a nők.”

Hasonló pár osztályok, hogy írja Double (DoubleAdder. DoubleAccumulator).

Java Flight Recorder

Végül, de nem utolsósorban - az új diagnosztikai eszközök állnak rendelkezésre az Oracle Java 8. Nevezetesen Java Flight Recorder. Technikailag JFR megjelent változata 7u40, de ez olyan fontos eszköz, nem is beszélve, azt nem lehet.

Flight Recorder egy olyan eszköz, beépített JVM összegyűjteni és diagnosztizálni a virtuális gép maga, valamint a futó alkalmazások is. Elkezdett KMB csapat. A JFR számos érdekes funkciók:

  • attól függően, hogy a profil az összegyűjtött információk, a munkahely JFR költségek is nagyon alacsony (kevesebb, mint 1% az Oracle nyilatkozatot, az alapértelmezett konfiguráció). Ez lehetővé teszi, hogy használja ezt az eszközt, a „harci”, és terhelés alatt;
  • JFR, szemben eszközöket, mint például VisualVM, rejthet állandó nyilvántartást a diagnosztikai információkat az gyűrűpufferben, és egy egyéni lerakó, információs politika a lemezen. Ez lehetővé teszi, hogy konfigurálja a virtuális gép úgy, hogy folyamatosan tartják diagnosztikai napló és tartsa csak probléma esetén (például, ha a CPU szisztematikus hiánya). Ez a megközelítés lehetővé teszi, így a „fekete doboz”, amely leírja az állam a virtuális gépek és az alkalmazások közvetlenül idején megnyilvánulása a problémát. Mielőtt JFR egyetlen módja, hogy elszigetelje a probléma az volt -, hogy elkapja a production'e úgynevezett „kezét.”

Milyen információkat lehet gyűjteni JFR? Ez nagyon sok, a főbb pontokat, melyek szerintem hasznos:

  • Mintavétel kód (amely osztályok és módszerek alkotják a legtöbb időt, nyilvános flow);
  • Információ az összes GC ciklus (azaz mennyi memóriát már megjelent, hogy mennyi ideig tartott az egyes szemétgyűjtő);
  • Memória kiosztás információ (egy patak osztály és eljárás a legtöbb memóriát bármilyen adattípust elszigetelt legtöbb memóriát felszabadítási sebesség időben);
  • Információk a hálózati és a lemez I / O;
  • amely Exception'y és Error'y már az alkalmazás által előállított;
  • Profil zár folyamok (amely áramokat gyakran blokkolva vannak, amelyen lokah / monitorok, ami folyik abban az időben a zár rendelkeznek ezek a zárak / figyeli leggyakrabban).

Top 10 funkciók java 8 közül sokan nem beszélnek

Top 10 funkciók java 8 közül sokan nem beszélnek

Top 10 funkciók java 8 közül sokan nem beszélnek

A sor folytatható, de ez a post nem tudom kellően a JFR. Ezért az érdeke valamennyi fél javasoljuk, hogy az idő, hogy tanulmányozza ezt a rendkívül hasznos eszköz.

következtetés

Az igazi lista jóval hosszabb. Ha kíváncsi, mi mást hozzá Java 8, azt javasoljuk, hogy nézd meg a szabványos Java könyvtár következőképpen regexp'om: @since \ s + 1,8 \ s * \ n. Meg fogja találni több mint 1000 bejegyzést. Egyik ezt a blogbejegyzést nem fogja fedezni.

Kapcsolódó cikkek