Java Liste Initialisering på En Linje

0 Comments

Oversigt

I denne hurtig vejledning, vi”ll undersøge, hvordan man formatere en Liste ved hjælp af one-liners.

yderligere læsning:

samlinger.emptyList () vs. ny liste eksempel

Lær forskellene mellem samlingerne.emptyList () og en ny liste instans.,
Læs mere →

Vejledning til Java ArrayList

en Hurtig og praktisk guide til at ArrayList i Java
Læs mere →

Opret Fra et Array

Vi kan oprette en Liste fra et array. Og takket være array-bogstaver kan vi initialisere dem i en linje:

Vi kan stole på varargs-mekanismen til at håndtere oprettelsen af array. Med det kan vi skrive mere kortfattet og læsbar kode:

resultatforekomsten af denne kode implementerer Listegrænsefladen, men det er ikke en java.util.,ArrayList eller en LinkedList. I stedet, det er en liste bakkes op af den oprindelige array, som har to konsekvenser, som vi vil se på i resten af dette afsnit.

selvom klassens navn tilfældigvis er ArrayList, er det i java.util.Arrays pakke.

2.1. Fast størrelse

resultatet eksempel fra Arrays.asList vil have en fast størrelse:

2.2. Fælles Reference

Den oprindelige array, og listen deler de samme referencer til objekter:

Opret Fra en Stream (Java 8)

Vi kan nemt konvertere en Strøm ind i enhver form for Indsamling.,

derfor kan vi med fabriksmetoderne for vandløb oprette og initialisere lister på en linje:

Vi skal bemærke her, at samlere.toList () gør ikke”t garantere den nøjagtige gennemførelse af den returnerede liste.

Der er ingen generel kontrakt om mutability, serialiabilityability eller tråd sikkerhed af den returnerede instans. Så, vores kode shouldn ” t stole på nogen af disse egenskaber.

nogle kilder fremhæver denne strøm.af(…).collect ( … ) kan have en større hukommelse og ydeevne fodaftryk end Arrays.asliste()., Men i næsten alle tilfælde, Det”s sådan en mikro-optimering, at der er ringe forskel.

Fabrikken Metoder (Java 9)

JDK 9 introducerer flere gode fabrik metoder til samlinger:

En vigtig detalje er at den / de returnerede tilfælde er uforanderlige. Udover det har fabriksmetoderne flere fordele i pladseffektivitet og trådsikkerhed.

dette emne udforskes mere i denne artikel.,

dobbeltbøjle initialisering

flere steder kan vi finde en metode kaldet dobbeltbøjle initialisering, som ser sådan ud:

navnet “dobbeltbøjle initialisering” er ret vildledende. Mens syntaksen kan se kompakt og elegant ud, skjuler den farligt, hvad der foregår under hætten.

Der er faktisk ikke et dobbeltbøjle syntakselement i Java; Det er to blokke formateret med vilje på denne måde.

med de ydre seler erklærer vi en anonym indre klasse, der vil være en underklasse af arraylisten., Vi kan erklære detaljerne i vores underklasse inde i disse seler.

Som sædvanlig kan vi bruge instance initiali blockser blokke, og det er her det indre par seler kommer fra.

kortheden af denne syntaks er fristende. Men det ” s betragtes som en anti-mønster.

for at læse mere om dobbeltbøjle initialisering, se vores artikel her.

konklusion

moderne Java tilbyder flere muligheder for at oprette en samling i en linje. Den metode, vi vælger, er næsten udelukkende ned til personlig præference snarere end teknisk ræsonnement.,

En vigtig takeaway er, at selv om det ser yndefuld, anti-mønster af anonym indre klasse initialisering (aka dobbelt parentes) har mange negative bivirkninger.

som altid er koden tilgængelig over på GitHub.

kom godt i gang med Foråret, 5 og Foråret Boot 2, gennem at Lære Foråret kurset:

>> CHECK UD forløbet


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *