inicializálja a listát Java-ban egyetlen sorban

ebben a bejegyzésben különféle módszereket tárgyalunk a lista inicializálására Java-ban egyetlen sorban.

a Java-t gyakran kritizálják a verbositás miatt.,structing it, storing it in a variable, invoking add() method on it n times, and then maybe wrapping it to make it unmodifiable:

1
2
3
4
5
6
7

List<String> list = new ArrayList<>();
list.,add (“C”);
lista.add (“C++”);
lista.add (“Java”);
list = gyűjtemények.unmodifiableList(lista);

ebben a bejegyzésben lesz különböző módszerek inicializálni lista egyetlen kifejezés.

tömbök.asList ()

Arrays.asList() visszaadja a megadott tömb által támogatott rögzített méretű listát. Mivel egy tömb szerkezetileg nem módosítható, nem lehet elemeket hozzáadni a listához, vagy eltávolítani az elemeket., The list will throw an UnsupportedOperationException if any resize operation is performed on it.

1
List<String> fixedLengthList = Arrays.,asList(“C”, “C++”, “Java”);

If we need a List that can expand or shrink, we can use –

1
List<String> list = new ArrayList<>(Arrays.,asList (“C”, “C++”,”Java”));

Java Collections

Collections class áll több statikus módszerek működnek gyűjtemények és vissza egy új gyűjtemény által támogatott egy meghatározott gyűjtemény.

⮚ gyűjtemények.addAll()

Collections.addAll() hozzáadja az összes megadott elemet a megadott gyűjteményhez. A hozzáadandó elemeket külön-külön vagy tömbként lehet megadni., When elements are specified individually, this method provides a convenient way to add a few elements to an existing collection:

1
2

List<String> list = Collections.EMPTY_LIST;
Collections.,addAll(list = new ArrayList<String>(), “C”, “C++”, “Java”);

h5 > ⮚ gyűjtemények.unmodifiableList ()

Alternatív megoldásként egy gyűjteményt feltölthet egy másik gyűjtemény másolástervezője segítségével. Az egyik ilyen módszer a Collections.unmodifiableList() a megadott lista módosíthatatlan nézetét adja vissza. A visszaküldött lista módosítására tett kísérletek UnsupportedOperationExceptionértéket eredményeznek.

⮚ gyűjtemények.,singletonList ()

Ha csak egyetlen elemet tartalmazó listát akarunk, akkor a Collections.singletonList() – t használhatjuk, amely az elemet tartalmazó változatlan listát adja vissza. A lista egy UnsupportedOperationException – t dob, ha bármilyen módosítási műveletet hajtanak végre rajta.

1
list< string > list = gyűjtemények.,singletonList (“Java”);

Double Brace Inicialization

egy másik alternatíva a”Double Brace Inicialization” használata. Ez létrehoz egy névtelen belső osztály csak egy példány inicializáló benne. Ezt a technikát a legjobban el kell kerülni, mivel minden használat során extra osztályba kerül, valamint rejtett hivatkozásokat tartalmaz a körülzáró példányra és az elfogott tárgyakra. Ez memóriaszivárgást vagy szerializációs problémákat okozhat.,v>2

3
4
5

Listát<String> list = new ArrayList<String>() {{
add(“C”);
add(“C++”);
add(“Java”);
}};

Java 8

A Java 8-Patak API felhasználhatják kis listák által megszerzése patak a statikus gyári módszerek felhalmozódó a bemeneti elemek egy új lista segítségével a gyűjtők., For example,

⮚ Collectors.toList()

Collectors.toList() returns a Collector that accumulates the input elements into a new List.

1
2

List<String> list = Stream.of(“C”, “C++”, “Java”)
.collect(Collectors.toList());

⮚ Collectors.,toCollection()

The streams collectors make no guarantee on the type of the List returned by toList(). To ensure the returned List is ArrayList, we can use toCollection(Supplier) as shown below:

1
2

List<String> list = Stream.,(“C”, “C++”, “Java”)
.Gyűjtse össze(gyűjtők.toCollection(ArrayList:: új));

⮚.collectingAndThen ()

tudtunk alkalmazkodni a kollektor, hogy végre egy további befejező átalakulás., Például tudunk alkalmazkodni a toList() gyűjtő, hogy mindig készítsen egy unmodifiable lista:

Java 9

Java 9 tette kényelmes, hogy hozzon létre esetben a lista kicsi számok elemek azáltal, hogy a Lists.of() statikus gyári módszerek, hogy létrehoz kompakt, unmodifiable esetben ez., For example,

1
List<String> unmodifiableList = List.of(“C”, “C++”, “Java”);

Java 9 provides 12 overloaded versions of this method –

Note there is a var-args version which can handle any number of elements., Most a nyilvánvaló kérdés az, hogy a Java 9 miért tartalmaz olyan sok extra módszert, amikor csak a var-args elegendő? Ennek oka az, hogy van egy finom futási teljesítmény előny. A var-args verzió valószínűleg lassabban fut, mint a varargokat nem használó túlterhelések. Ennek az az oka, hogy a varargs-módszer minden meghívása tömb allokációt és inicializálást eredményez, és nem felejti el a GC overhead-et.

A Javadoc szerint a List.of() által létrehozott Listapéldányok a következő jellemzőkkel rendelkeznek:

  1. strukturálisan változatlanok., Az elemeket nem lehet hozzáadni, eltávolítani vagy kicserélni. Bármely mutátor módszer hívása mindig a UnsupportedOperationException dobását eredményezi. Ha azonban a mellékelt elemek maguk is megváltoztathatók, akkor a lista tartalma megváltozhat.
  2. letiltják a null elemeket. A null elemekkel történő létrehozásuk kísérlete a NullPointerExceptionértéket eredményezi.
  3. szerializálhatók, ha minden elem szerializálható.
  4. a listában szereplő elemek sorrendje megegyezik a megadott argumentumok vagy a megadott tömb elemeinek sorrendjével.,
  5. értékalapú. A hívóknak nem szabad feltételezéseket tenniük a visszaküldött példányok személyazonosságáról. A gyárak szabadon hozhatnak létre új példányokat, vagy újra felhasználhatják a meglévőket. Ezért az ilyen esetekre vonatkozó identitásérzékeny műveletek (reference equality (==), identity hash code, and synchronization) megbízhatatlanok, ezért kerülni kell őket.,

If we need a List that can expand or shrink, we can use –

1
List<String> list = new ArrayList<>(List.,a(“C”, “C++”, “Java”));

Kérjük, vegye figyelembe, hogy ellentétben a statikus módszerek osztályok, statikus módszerek felületek nem örökölt, így nem lehet idézni őket, keresztül egy végrehajtási osztály, sem a via egy példányát a felületet.

Guava

a Guava számos statikus segédprogramot is biztosít a listás példányokhoz.,

Inicialize List using Guava in Java

Apache Commons Collections

Apache Commons Collections ListUtils class provides unmodifiableList() ez egy módosíthatatlan listát ad vissza, amelyet az adott lista támogat. NullPointerException, ha az adott lista null, és egy UnsupportedOperationException, ha bármilyen módosítási műveletet hajtanak végre rajta.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük