Inicijalizacija HashSet-a u vrijeme gradnje

1. Pregled

U ovom brzom vodiču predstavit ćemo razne metode inicijaliziranje HashSet s vrijednostima, u vrijeme njegove izgradnje.

Ako umjesto toga želite istražiti značajke HashSet, pogledajte ovaj osnovni članak ovdje.

Zaronit ćemo u Javu ugrađene metode od Jave 5 i prije slijedi nova mehanizam uveden od Jave 8. Također ćemo vidjeti a prilagođena korisna metoda i na kraju istražite značajke koje pruža Biblioteke zbirki treće strane, Posebno Google Guava.

Ako imate sreće što ste već prešli na JDK9 +, jednostavno možete koristiti tvorničke metode prikupljanja.

2. Java ugrađene metode

Počnimo s ispitivanjem tri ugrađena mehanizmi dostupni od Java 5 ili ranije.

2.1. Upotreba druge instance zbirke

Možemo proći postojeće primjer druge zbirke za inicijalizaciju Postavi. U donjem primjeru koristimo stvoreni inline Popis:

Set set = new HashSet (Arrays.asList ("a", "b", "c"));

2.2. Korištenje anonimne nastave

U još jednom pristupu, anonimnoj klasi možemo dodati element HashSet.

Imajte na umu upotrebu dvostrukih kovrčavih zagrada. Ovaj pristup je tehnički vrlo skupo jer stvara anonimnu klasu svaki put kad se pozove.

Dakle, ovisno o tome koliko često moramo inicijalizirati Postavi možemo pokušajte izbjeći korištenje ovog pristupa:

Set set = new HashSet () {{add ("a"); dodaj ("b"); dodaj ("c"); }};

2.3. Korištenje korisne metode Zbirke od Jave 5

Java Zbirke korisnost klasa pruža metodu imenovanu jednokrevetna stvoriti a Postavi s jednim elementom. The Postavi instancu stvorenu pomoću jednokrevetna metoda je nepromjenjiv što znači da mu ne možemo dodati više vrijednosti.

Postoje situacije posebno u jedinstvenom testiranju kada moramo stvoriti a Postavi s jednom vrijednošću:

Set set = Collections.singleton ("a");

3. Definiranje prilagođene korisne metode

Možemo definirati a statički konačni metoda kao u nastavku. Metoda prihvaća varijabilne argumente.

Koristeći Zbirke.addAll koja prihvaća objekt kolekcije i niz vrijednosti je najbolje među ostalima zbog niskih troškova kopiranja vrijednosti.

The metoda koristi generičke lijekove tako da možemo proslijediti vrijednosti bilo koje vrste:

javni statički konačni Set newHashSet (T ... objs) {Set set = new HashSet (); Collections.addAll (set, objs); povratni set; }

Način korisnosti može se koristiti u našem kodu kao dolje.

Set set = newHashSet ("a", "b", "c");

4. Korištenje Stream Budući da je Java 8

Uvođenjem Stream API u Javi 8, imamo dodatne mogućnosti. Možemo koristiti Stream s Kolekcionari kako je prikazano u donjem kodu:

Set set = Stream.of ("a", "b", "c") .collect (Collectors.toCollection (HashSet :: new));

5. Korištenje zbirke zbirki trećih strana

Postoji više biblioteka zbirki trećih strana, uključujući Google Guava, Apache Commons Collections i Eclipse Collections da nabrojimo samo neke.

Te knjižnice pružaju prikladne korisne metode za inicijalizaciju zbirki poput Set. Od Google Guava je jedan od najčešće korištenih ovdje imamo primjer iz njega. Guava ima prikladne metode za promjenjive i nepromjenjive Postavi objekti:

Set set = Sets.newHashSet ("a", "b", "c");

Slično tome, Guava ima klasu korisnosti za stvaranje nepromjenjiv Postavi instance, kao što možemo vidjeti u donjem primjeru.

Set set = ImmutableSet.of ("a", "b", "c");

6. Zaključak

U zaključku smo vidjeli više načina na koje a HashSet može se inicijalizirati dok je konstruiran. Ovi pristupi ne pokrivaju nužno sve moguće načine na bilo koji način. Bio je to samo pokušaj prikazivanja najčešćih načina.

Jedan takav pristup koji ovdje nije obrađen mogao bi biti korištenje graditelja objekata za konstrukciju a Postavi.

Kao i uvijek primjer radnog koda dostupan je na GitHub-u.