Java List Initialization in One Line
overzicht
in deze korte handleiding zullen we onderzoeken hoe je een lijst kunt initialiseren met behulp van one-liners.
verder lezen:
collecties.emptyList () vs. nieuwe lijst instantie
Guide to the Java ArrayList
Create From an Array
We kunnen een lijst maken van een array. En dankzij array literals, kunnen we ze initialiseren in één regel:
We kunnen het varargs mechanisme vertrouwen om de array creatie af te handelen. Hiermee kunnen we beknoptere en leesbare code schrijven:
het resultaat van deze code implementeert de lijst-interface, maar het is geen java.util.,ArrayList of een LinkedList. In plaats daarvan is het een lijst die wordt ondersteund door de originele array, die twee implicaties heeft die we in de rest van deze sectie zullen bekijken.
hoewel de class”s naam ArrayList is, staat deze in java.util.Arrays pakket.
2.1. Vaste grootte
het resultaat van Arrays.asList zal een vaste grootte hebben:
2.2. Gedeelde referentie
de originele array en de lijst delen dezelfde verwijzingen naar de objecten:
maak van een Stream (Java 8)
We kunnen een Stream eenvoudig converteren naar elke soort verzameling.,
daarom kunnen we met de fabrieksmethoden voor Streams lijsten maken en initialiseren in één regel:
We moeten hier opmerken dat Collectors.toList() garandeert niet de exacte implementatie van de geretourneerde lijst.
Er is geen algemeen contract over de veranderbaarheid, serializeerbaarheid of threadveiligheid van de geretourneerde instantie. Dus, onze code moet ‘ t vertrouwen op een van deze eigenschappen.
sommige bronnen markeren die Stream.van(…).collect (…) kan een groter geheugen en performance footprint hebben dan Arrays.asList()., Maar in bijna alle gevallen is het zo ‘ n micro-optimalisatie dat er weinig verschil is.
Factory Methods (Java 9)
JDK 9 introduceert verschillende handige factory methods voor collecties:
een belangrijk detail is dat de geretourneerde instanties onveranderlijk zijn. Daarnaast hebben de fabrieksmethoden verschillende voordelen op het gebied van ruimte-efficiëntie en schroefdraadveiligheid.
dit onderwerp wordt meer besproken in dit artikel.,
Double-brace Initialization
op verschillende plaatsen vinden we een methode genaamd double-brace initialization, die er als volgt uitziet:
de naam “double-brace initialization” is vrij misleidend. Hoewel de syntaxis er compact en elegant uitziet, verbergt het gevaarlijk wat er onder de motorkap gebeurt.
Er is”t eigenlijk een dubbele-brace syntaxis element in Java; Dit zijn twee blokken met opzet opgemaakt op deze manier.
met de buitenste accolades verklaren we een anonieme binnenklasse die een subklasse van de ArrayList zal zijn., We kunnen de details van onze onderklasse in deze beugels aangeven.
zoals gewoonlijk kunnen we instance initializer blokken gebruiken, en dat is waar het binnenste paar accolades vandaan komt.
de beknoptheid van deze syntaxis is verleidelijk. Echter, het wordt beschouwd als een anti-patroon.
om meer te lezen over double-brace initialisatie, neem een kijkje op ons artikel hier.
conclusie
Modern Java biedt verschillende opties om een verzameling op één regel aan te maken. De methode die we kiezen is bijna geheel te danken aan persoonlijke voorkeur in plaats van technische redenering.,
een belangrijk afhaalpunt is dat, hoewel het er sierlijk uitziet, het anti-patroon van anonieme inner class initialisatie (aka double brace) veel negatieve bijwerkingen heeft.
Zoals altijd is de code beschikbaar op GitHub.
aan de slag met Spring 5 en Spring Boot 2, Via de learn Spring course:
>> bekijk de cursus