Sprievodca po Guava BiMap

1. Prehľad

V tomto tutoriáli si ukážeme, ako používať Google Guava BiMap rozhranie a jeho viacnásobné implementácie.

A BiMap (alebo „obojsmerná mapa“) je špeciálny druh mapy, ktorá zachováva inverzný pohľad na mapu a zároveň zaisťuje, že nie sú prítomné duplicitné hodnoty a hodnotu je možné vždy bezpečne použiť na získanie kľúča späť.

Základná implementácia BiMap je HashBiMap kde vnútorne využíva dva Mapas, jeden pre mapovanie kľúča k hodnote a druhý pre mapovanie kľúča k hodnote.

2. Google Guava BiMap

Poďme sa pozrieť na to, ako používať BiMap trieda.

Začneme pridaním závislosti knižnice Google Guava na serveri pom.xml:

 com.google.guava guava 21.0 

Najnovšiu verziu závislosti si môžete skontrolovať tu.

3. Vytvorenie BiMap

Môžete vytvoriť inštanciu BiMap niekoľkými spôsobmi:

  • Ak sa chystáte zaoberať vlastným objektom Java, použite vytvoriť metóda z triedy HashBiMap:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • Ak už máme existujúcu mapu, môžete vytvoriť inštanciu a BiMap pomocou preťaženej verzie vytvoriť metóda z triedy HashBiMap:
Mapa capitalCountryBiMap = nový HashMap (); // ... HashBiMap.create (capitalCountryBiMap); 
  • Ak sa chystáte zaoberať kľúčom typu Enum, Použi vytvoriť metóda z triedy EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • Ak chcete vytvoriť nemennú mapu, použite ImmutableBiMap triedy (ktorá sa riadi vzorom staviteľa):
BiMap capitalCountryBiMap = nový ImmutableBiMap.Builder () .put ("Nové Dillí", "India") .build (); 

4. Používanie BiMap

Začnime jednoduchým príkladom znázorňujúcim použitie BiMap, kde môžeme získať kľúč na základe hodnoty a hodnoty na základe kľúča:

@Test public void givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put („Naí Dillí“, „India“); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusko"); Reťazec keyFromBiMap = capitalCountryBiMap.inverse (). Get ("Rusko"); Reťazec valueFromBiMap = capitalCountryBiMap.get ("Washington, D.C."); assertEquals ("Moskva", keyFromBiMap); assertEquals ("USA", valueFromBiMap); }

Poznámka: inverzný vyššie uvedená metóda vráti inverzný pohľad na BiMap, ktorá mapuje každú z hodnôt BiMap na jej priradené kľúče.

BiMap hodí IllegalArgumentException keď sa pokúsime dvakrát uložiť duplicitnú hodnotu.

Pozrime sa na príklad toho istého:

@Test (očakáva sa = IllegalArgumentException.class) public void givenBiMap_whenSameValueIsPresent_shouldThrowException () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Bombaj", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusko"); capitalCountryBiMap.put („Naí Dillí“, „India“); } 

Ak chceme prepísať hodnotu, ktorá je už v BiMap, môžeme využiť forcePut metóda:

@Test public void givenSameValueIsPresent_whenForcePut_completesSuccessfully () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Bombaj", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusko"); capitalCountryBiMap.forcePut („Naí Dillí“, „India“); assertEquals ("USA", capitalCountryBiMap.get ("Washington, D.C.")); assertEquals ("Washington, D.C.", capitalCountryBiMap.inverse (). get ("USA")); }

5. Záver

V tomto stručnom návode sme ilustrovali príklady použitia súboru BiMap v knižnici Guava. Používa sa predovšetkým na získanie kľúča na základe hodnoty z mapy.

Implementáciu týchto príkladov možno nájsť v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a bežať tak, ako je.


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