Inicjalizacja listy Javy w jednym wierszu
przegląd
w tym krótkim tutorialu zbadamy, jak zainicjować listę za pomocą jednolinijek.
Czytaj dalej:
Kolekcje.emptyList () vs. nowa instancja List
Przewodnik po macierzy Java
Utwórz z tablicy
możemy utworzyć listę z tablicy. A dzięki literałom tablicy możemy je zainicjalizować w jednej linii:
możemy zaufać mechanizmowi varargs, który zajmie się tworzeniem tablicy. Dzięki temu możemy napisać bardziej zwięzły i czytelny kod:
instancja wynikowa tego kodu implementuje interfejs listy, ale nie jest to java.util.,ArrayList lub LinkedList. Zamiast tego, jest to lista wspierana przez oryginalną tablicę, która ma dwa implikacje, które przyjrzymy się w pozostałej części tej sekcji.
chociaż nazwa klasy jest ArrayList, jest ona w Javie.util.Pakiet tablic.
2.1. Stały rozmiar
instancja wynikowa z tablic.asList będzie miał stały rozmiar:
2.2. Shared Reference
oryginalna tablica i lista mają te same odniesienia do obiektów:
Utwórz ze strumienia (Java 8)
możemy łatwo przekonwertować strumień na dowolny rodzaj kolekcji.,
dlatego za pomocą fabrycznych metod dla strumieni możemy tworzyć i inicjalizować listy w jednej linii:
powinniśmy tutaj zauważyć, że kolektory.tolist () nie gwarantuje dokładnej implementacji zwracanej listy.
nie ma ogólnej Umowy o zmienność, serializowalność lub Bezpieczeństwo wątku zwracanej instancji. Nasz kod nie powinien polegać na żadnej z tych właściwości.
niektóre źródła podkreślają ten strumień.z dnia ( … ).collect ( … ) może mieć większą pamięć i wydajność niż Tablice.asList ()., Ale w prawie wszystkich przypadkach jest to taka mikro-optymalizacja, że nie ma różnicy.
metody fabryczne (Java 9)
JDK 9 wprowadza kilka wygodnych metod fabrycznych dla kolekcji:
jednym z ważnych szczegółów jest to, że zwracane instancje są niezmienne. Poza tym metody fabryczne mają kilka zalet w zakresie wydajności przestrzeni i bezpieczeństwa gwintów.
ten temat jest bardziej szczegółowo omówiony w tym artykule.,
Inicjalizacja podwójnego nawiasu klamrowego
w kilku miejscach możemy znaleźć metodę o nazwie inicjalizacja podwójnego nawiasu klamrowego, która wygląda tak:
nazwa „inicjalizacja podwójnego nawiasu klamrowego” jest dość myląca. Składnia może wyglądać kompaktowo i elegancko, ale niebezpiecznie ukrywa to, co dzieje się pod maską.
w Javie nie ma elementu składni o podwójnym nawiasie; są to dwa bloki sformatowane celowo w ten sposób.
za pomocą zewnętrznych szelek deklarujemy anonimową klasę wewnętrzną, która będzie podklasą ArrayList., Możemy zadeklarować szczegóły naszej podklasy wewnątrz tych szelek.
jak zwykle możemy używać bloków inicjalizacji instancji i stąd pochodzi wewnętrzna para szelek.
zwięzłość tej składni jest kusząca. Jednak jest to uważane za anty-wzorzec.
aby przeczytać więcej o inicjalizacji podwójnego nawiasu klamrowego, zajrzyj do naszego artykułu tutaj.
Nowoczesna Java oferuje kilka opcji tworzenia kolekcji w jednej linii. Metoda, którą wybieramy, jest prawie całkowicie zależna od osobistych preferencji, a nie od technicznego rozumowania.,
ważne jest to, że chociaż wygląda wdzięcznie, anty-wzorzec anonimowej inicjalizacji klasy wewnętrznej (aka double brace) ma wiele negatywnych skutków ubocznych.
jak zawsze, kod jest dostępny na Githubie.
zacznij korzystać z Spring 5 i Spring Boot 2, korzystając z kursu Learn Spring:
>> sprawdź kurs