Guide til Guava BiMap

1. Oversikt

I denne veiledningen vil vi vise hvordan du bruker Google Guava BiMap grensesnitt og dets mange implementeringer.

EN BiMap (eller "toveiskart") er en spesiell type kart som opprettholder en omvendt visning av kartet, samtidig som det sikres at ingen duplikatverdier er tilstede, og en verdi kan alltid brukes trygt for å få nøkkelen tilbake.

Den grunnleggende implementeringen av BiMap er HashBiMap der det internt bruker to Karts, en for nøkkelen til verdikartlegging og den andre for verdien til nøkkelkartlegging.

2. Google Guava BiMap

La oss ta en titt på hvordan du bruker BiMap klasse.

Vi begynner med å legge til avhengigheten av Google Guava-biblioteket i pom.xml:

 com.google.guava guava 21.0 

Den siste versjonen av avhengigheten kan sjekkes her.

3. Opprette et BiMap

Du kan opprette en forekomst av BiMap på flere måter som følger:

  • Hvis du skal håndtere et tilpasset Java-objekt, bruk skape metode fra klassen HashBiMap:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • Hvis vi allerede har et eksisterende kart, kan du opprette en forekomst av en BiMap ved hjelp av en overbelastet versjon av skape metode fra en klasse HashBiMap:
Kart kapitalCountryBiMap = ny HashMap (); // ... HashBiMap.create (capitalCountryBiMap); 
  • Hvis du skal håndtere en nøkkel av typen Enum, bruke skape metode fra klassen EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • Hvis du har tenkt å lage et uforanderlig kart, bruk ImmutableBiMap klasse (som følger et byggmønster):
BiMap capitalCountryBiMap = ny ImmutableBiMap.Builder () .put ("New Delhi", "India") .build (); 

4. Bruke BiMap

La oss starte med et enkelt eksempel som viser bruken av BiMap, der vi kan få en nøkkel basert på en verdi og en verdi basert på en nøkkel:

@Test offentlig ugyldig givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("New Delhi", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Russland"); Streng keyFromBiMap = capitalCountryBiMap.inverse (). Get ("Russland"); StrengverdiFromBiMap = capitalCountryBiMap.get ("Washington, D.C."); assertEquals ("Moskva", keyFromBiMap); assertEquals ("USA", valueFromBiMap); }

Merk: omvendt metoden ovenfor returnerer det omvendte bildet av BiMap, som kartlegger hver av BiMaps verdier til tilhørende nøkler.

BiMap kaster en IllegalArgumentException når vi prøver å lagre en duplikatverdi to ganger.

La oss se et eksempel på det samme:

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

Hvis vi ønsker å overstyre verdien som allerede er tilstede i BiMap, kan vi gjøre bruk av forcePut metode:

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

5. Konklusjon

I denne konsiseopplæringen illustrerte vi eksempler på bruk av BiMap i Guava-biblioteket. Den brukes hovedsakelig for å få en nøkkel basert på verdien fra kartet.

Implementeringen av disse eksemplene finnes i GitHub-prosjektet - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.


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