Java list Initialization in One Line (Română)
Prezentare generală
În acest tutorial rapid, vom investiga cum să inițializeze o listă folosind o singură linie.
lectură suplimentară:
colecții.emptyList () vs.Listă nouă instanță
ghid pentru Java ArrayList
creați dintr-o matrice
putem crea o listă dintr-o matrice. Și datorită matrice literali, putem inițializa le într-o singură linie:
putem avea încredere în varargs mecanism care să se ocupe de matrice creație. Cu aceasta, putem scrie un cod mai concis și mai ușor de citit:
instanța de rezultat a acestui cod implementează interfața listă, dar nu este o java.util.,ArrayList sau un LinkedList. În schimb,este o listă susținută de matricea originală, care are două implicații pe care le vom analiza în restul acestei secțiuni.
deși numele clasei se întâmplă să fie ArrayList, este în java.util.Pachetul Arrays.
2. 1. Dimensiune fixă
instanța rezultat din matrice.asList va avea o dimensiune fixă:
2.2. Referință partajată
matricea originală și lista împărtășesc aceleași referințe la obiecte:
creați dintr-un flux (Java 8)
Putem converti cu ușurință un flux în orice fel de colecție., prin urmare, cu metodele din fabrică pentru fluxuri, putem crea și inițializa liste într-o singură linie:
ar trebui să notăm aici că colecționarii.toList () nu garantează implementarea exactă a listei returnate.
nu există niciun contract general cu privire la mutabilitatea, serializabilitatea sau siguranța firului instanței returnate. Deci, codul nostru nu ar trebui să se bazeze pe niciuna dintre aceste proprietăți.unele surse evidențiază acel flux.din (…).collect ( … ) poate avea o memorie mai mare și amprenta de performanță decât matrice.asList ()., Dar, în aproape toate cazurile, este o astfel de micro-optimizare că există o mică diferență.
Fabrica de Metode (Java 9)
JDK 9 introduce mai multe convenabil fabrică de metode pentru colecții:
Un detaliu important este faptul că a revenit cazuri sunt imuabile. Dincolo de aceasta, metodele din fabrică au mai multe avantaje în ceea ce privește eficiența spațiului și siguranța firului.acest subiect este explorat mai mult în acest articol.,
inițializare Cu Bretele duble
în mai multe locuri, putem găsi o metodă numită inițializare Cu Bretele duble, care arată astfel:
numele „inițializare Cu Bretele duble” este destul de înșelător. În timp ce sintaxa poate părea compactă și elegantă, ascunde periculos ceea ce se întâmplă sub capotă.
nu există de fapt un element de sintaxă Cu Bretele duble în Java; acestea sunt două blocuri formatate intenționat în acest fel.
cu bretelele exterioare, declarăm o clasă interioară anonimă care va fi o subclasă a Arraylistului., Putem declara detaliile subclasei noastre în interiorul acestor bretele.
ca de obicei, putem folosi blocuri de inițializare a instanțelor și de aici provine perechea interioară de bretele.
concizia acestei sintaxe este tentantă. Cu toate acestea, este considerat un anti-model.pentru a citi mai multe despre inițializarea Cu Bretele duble, aruncați o privire la articolul nostru aici.
concluzie
Java Modern oferă mai multe opțiuni pentru a crea o colecție într-o singură linie. Metoda pe care o alegem este aproape în întregime în funcție de preferințele personale, mai degrabă decât de raționamentul tehnic.,un takeaway important este că, deși arată grațios, anti-modelul inițializării anonime a clasei interioare (aka double brace) are multe efecte secundare negative.ca întotdeauna, codul este disponibil pe GitHub.
începeți cu arc 5 și Primăvara Boot 2, prin Învețe Primăvară curs:
>> CHECK OUT CURS