Guide til Guava BiMap

1. Oversigt

I denne vejledning viser vi, hvordan du bruger Google Guava BiMap interface og dens flere implementeringer.

EN BiMap (eller "tovejskort") er en speciel slags kort, der opretholder en omvendt visning af kortet, samtidig med at der ikke findes duplikatværdier, og en værdi altid kan bruges sikkert til at få nøglen tilbage.

Den grundlæggende implementering af BiMap er HashBiMap hvor det internt bruger to Korts, den ene for nøglen til værdikortlægning og den anden for værdien for nøglekortlægningen.

2. Google Guava BiMap

Lad os se på, hvordan du bruger BiMap klasse.

Vi starter med at tilføje afhængigheden af ​​Google Guava-biblioteket i pom.xml:

 com.google.guava guava 21.0 

Den seneste version af afhængigheden kan kontrolleres her.

3. Oprettelse af et BiMap

Du kan oprette en forekomst af BiMap på flere måder som følger:

  • Hvis du vil håndtere et brugerdefineret Java-objekt, skal du bruge skab metode fra klassen HashBiMap:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • Hvis vi allerede har et eksisterende kort, kan du oprette en forekomst af en BiMap ved hjælp af en overbelastet version af skab metode fra en klasse HashBiMap:
Kort kapitalCountryBiMap = nyt HashMap (); // ... HashBiMap.create (capitalCountryBiMap); 
  • Hvis du skal håndtere en nøgle af typen Enum, brug skab metode fra klassen EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • Hvis du har til hensigt at oprette et uforanderligt kort, skal du bruge ImmutableBiMap klasse (som følger et bygmønster):
BiMap capitalCountryBiMap = ny ImmutableBiMap.Builder () .put ("New Delhi", "Indien") .build (); 

4. Brug af BiMap

Lad os starte med et simpelt eksempel, der viser brugen af BiMap, hvor vi kan få en nøgle baseret på en værdi og en værdi baseret på en nøgle:

@Test offentlig ugyldighed givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("New Delhi", "Indien"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusland"); String keyFromBiMap = capitalCountryBiMap.inverse (). Get ("Rusland"); StrengværdiFromBiMap = capitalCountryBiMap.get ("Washington, D.C."); assertEquals ("Moskva", keyFromBiMap); assertEquals ("USA", valueFromBiMap); }

Bemærk: omvendt metoden ovenfor returnerer det omvendte billede af BiMap, som kortlægger hver af BiMaps værdier til de tilknyttede taster.

BiMap kaster en IllegalArgumentException når vi prøver at gemme en duplikatværdi to gange.

Lad os se et eksempel på det samme:

@Test (forventet = IllegalArgumentException.class) offentlig ugyldighed givenBiMap_whenSameValueIsPresent_shouldThrowException () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "Indien"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusland"); capitalCountryBiMap.put ("New Delhi", "Indien"); } 

Hvis vi ønsker at tilsidesætte den værdi, der allerede findes i BiMap, kan vi gøre brug af forcePut metode:

@Test offentlig ugyldighed givenSameValueIsPresent_whenForcePut_completesSuccessfully () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "Indien"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusland"); capitalCountryBiMap.forcePut ("New Delhi", "Indien"); assertEquals ("USA", capitalCountryBiMap.get ("Washington, D.C.")); assertEquals ("Washington, D.C.", capitalCountryBiMap.inverse (). get ("USA")); }

5. Konklusion

I denne koncise tutorial illustrerede vi eksempler på brug af BiMap i Guava-biblioteket. Det bruges overvejende til at få en nøgle baseret på værdien fra kortet.

Implementeringen af ​​disse eksempler findes i GitHub-projektet - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.


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