Java Liste Initialisering i En Linje
Oversikt
I denne rask tutorial, vi vil undersøke hvordan å initialisere en Liste ved hjelp av one-liners.
Videre lesing:
Samlinger.emptyList() vs. Ny Liste Eksempel
Guide til Java ArrayList
Opprett Fra en Matrise
Vi kan lage en Liste fra en matrise. Og takk til array verdiane, vi kan initialisere dem i en linje:
Vi kan stole på varargs mekanisme for å håndtere utvalg skapelsen. Med det kan vi skrive mer konsis og lesbar kode:
resultatet forekomst av denne koden som implementerer grensesnittet Liste, men det er»t en java.util.,ArrayList eller en LinkedList. I stedet, det er en Liste som støttes av den opprinnelige matrisen, som har to implikasjoner som vi vil se på i resten av dette avsnittet.
Selv om klassen»s navn skjer for å være ArrayList, det er i java.util.Matriser pakken.
2.1. Fast Størrelse
resultatet eksempel fra Matriser.asList vil ha en fast størrelse:
2.2. Felles Referanse
Den opprinnelige tabellen, og listen dele samme referanser til objekter:
Opprett Fra en Bekk (Java 8)
Vi kan enkelt konvertere en Strøm inn i noen form for Samling.,
Derfor, med fabrikken metoder for Bekker, vi kan opprette og initialisere lister i én linje:
Vi bør merke seg her at Samlere.toList() doesn»t garantere nøyaktig gjennomføring av de returnerte Listen.
Det er ingen generelle kontrakt om mutability, serializability eller tråd sikkerhet returnert eksempel. Så, våre etiske bør»t stole på noen av disse egenskapene.
Noen kilder markere at Strømmen.av(…).samle(…) kan ha en større minne og ytelse på mer enn Matriser.asList()., Men i nesten alle tilfeller, det er slik en micro-optimalisering av at det er liten forskjell.
Fabrikken Metoder (Java 9)
JDK 9 introduserer flere praktiske fabrikken metoder for samlinger:
En viktig detalj er at det returnerte tilfeller er uforanderlig. Utover det, fabrikken metoder har flere fordeler i verdensrommet effektivitet og tråd sikkerhet.
Dette emnet er utforsket mer i denne artikkelen.,
Double-Spenne-Initialisering
flere steder, kan vi finne en metode kalt dobbel-spenne-initialisering, som ser ut som dette:
navnet «double-spenne-initialisering» er ganske misvisende. Mens syntaks kan se kompakt og elegant, er det farlig skjuler hva er det som skjer under panseret.
Det er»t faktisk en dobbel-spenne syntaks element i Java; de er to blokker som er formatert med vilje på denne måten.
Med den ytre tannregulering, vi erklærer en anonym indre klasse som vil være en underklassen av ArrayList., Vi kan erklære detaljer om vår underklassen i disse tannregulering.
Som vanlig, vi kan bruke eksempel initializer blokker, og det er der den indre par bukseseler kommer fra.
Den korte denne syntaksen er fristende. Men, det er ansett som en anti-mønster.
for Å lese mer om dobbelt-spenne-initialisering, ta en titt på vår artikkel her.
Konklusjon
Moderne Java tilbyr flere alternativer for å lage en Samling i én linje. Metoden vi velger, er nesten helt ned til personlige preferanser heller enn tekniske resonnement.,
En viktig takeaway er at, selv om det ser grasiøs, anti-mønster av anonym indre klasse initialisering (aka double spenne) har mange negative bivirkninger.
Som alltid, den koden er tilgjengelig over på GitHub.
Komme i gang med Våren 5 og Våren Boot 2, gjennom å Lære Våren kurset:
>> SJEKK UT KURSET