Initialiserer HashSet på tidspunktet for bygging

1. Oversikt

I denne raske opplæringen introduserer vi forskjellige metoder for initialisering av HashSet med verdier, på tidspunktet for konstruksjonen.

Hvis du i stedet ønsker å utforske funksjonene til HashSet, referer til denne kjerneartikkelen her.

Vi vil dykke ned i Java innebygde metoder siden Java 5 og før etterfulgt av nye mekanisme introdusert siden Java 8. Vi får også se en tilpasset verktøymetode og til slutt utforske funksjonene som tilbys av Tredjeparts samlingsbiblioteker, Spesielt Google Guava.

Hvis du er heldig som allerede har migrert til JDK9 +, kan du bare bruke samlingens fabrikkmetoder.

2. Java innebygde metoder

La oss begynne med å undersøke tre innebygde tilgjengelige mekanismer siden Java 5 eller før.

2.1. Bruke en annen samlingsforekomst

Vi kan passere en eksisterende forekomst av en annen samling å initialisere Sett. I eksemplet nedenfor bruker vi en inline opprettet Liste:

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

2.2. Bruke Anonym klasse

I enda en tilnærming kan vi bruke den anonyme klassen til å legge til et element i HashSet.

Legg merke til bruken av doble krøller. Denne tilnærmingen er teknisk veldig dyrt som det skaper en anonym klasse hver gang den heter.

Så avhengig av hvor ofte vi trenger å initialisere Sett vi kan prøv å unngå å bruke denne tilnærmingen:

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

2.3. Bruke Collections Utility Method Siden Java 5

Java-ene Samlinger nytte klasse gir metoden som heter singleton å lage en Sett med et enkelt element. De Sett forekomst opprettet med singleton metoden er uforanderlig noe som betyr at vi ikke kan legge til flere verdier til det.

Det er situasjoner spesielt i enhetstesting der vi trenger å lage en Sett med en enkelt verdi:

Sett sett = Collections.singleton ("a");

3. Definere tilpasset verktøymetode

Vi kan definere en statisk finale metoden som nedenfor. Metoden godtar variable argumenter.

Ved hjelp av Collections.addAll som godtar samleobjektet og en rekke verdier er best blant andre på grunn av lave omkostninger for kopieringsverdier.

De metoden er å bruke generiske stoffer slik at vi kan overføre verdier av alle typer:

offentlig statisk slutt Set newHashSet (T ... objs) {Set set = new HashSet (); Collections.addAll (sett, objs); retur sett; }

Verktøymetoden kan brukes i koden vår som nedenfor.

Sett sett = newHashSet ("a", "b", "c");

4. Bruke Strøm Siden Java 8

Med introduksjonen av Strøm API i Java 8, vi har flere alternativer. Vi kan bruke Strøm med Samlere som vist i koden nedenfor:

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

5. Bruke tredjeparts samlingsbibliotek

Det er flere tredjepartssamlingsbiblioteker, inkludert Google Guava, Apache Commons Collections og Eclipse Collections, for bare å nevne noen.

Disse bibliotekene gir praktiske verktøy for å initialisere samlinger som Set. Siden Google Guava er en av de mest brukte her, vi har et eksempel fra den. Guava har praktiske metoder for foranderlig og uforanderlig Sett gjenstander:

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

På samme måte har Guava en verktøyklasse for å lage uforanderlig Sett tilfeller, som vi kan se i eksemplet nedenfor.

Sett sett = ImmutableSet.of ("a", "b", "c");

6. Konklusjon

Avslutningsvis så vi flere måter a HashSet kan initialiseres mens den er konstruert. Disse tilnærmingene dekker ikke nødvendigvis alle mulige måter på noen måte. Det var bare et forsøk på å vise frem de vanligste måtene.

En slik tilnærming som ikke er dekket her, kan være å bruke objektbyggeren til å konstruere en Sett.

Som alltid er kodeeksempel tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found