Vodič za Guava BiMap

1. Pregled

U ovom uputstvu pokazat ćemo kako koristiti Google Guava BiMap sučelje i njegove višestruke implementacije.

A BiMap (ili "dvosmjerna karta") posebna je vrsta karte koja održava inverzni prikaz karte, istovremeno osiguravajući da ne postoje duplicirane vrijednosti i da se vrijednost uvijek može sigurno koristiti za vraćanje ključa.

Osnovna provedba BiMap je HashBiMap gdje interno koristi dvoje Kartas, jedan za mapiranje ključa za vrijednost, a drugi za mapiranje vrijednosti za ključ.

2. Google Guava BiMap

Pogledajmo kako koristiti BiMap razred.

Počet ćemo dodavanjem ovisnosti o knjižnici Google Guava u pom.xml:

 com.google.guava guava 21.0 

Najnoviju verziju ovisnosti možete provjeriti ovdje.

3. Stvaranje BiMap-a

Možete stvoriti instancu BiMap na više načina kako slijedi:

  • Ako ćete se baviti prilagođenim Java objektom, upotrijebite stvoriti metoda iz klase HashBiMap:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • Ako već imamo postojeću kartu, možete stvoriti instancu a BiMap pomoću preopterećene verzije stvoriti metoda iz razreda HashBiMap:
Mapa capitalCountryBiMap = novi HashMap (); // ... HashBiMap.create (capitalCountryBiMap); 
  • Ako ćete imati posla s ključem tipa Enum, koristiti stvoriti metoda iz razreda EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • Ako namjeravate stvoriti nepromjenjivu kartu, upotrijebite ImmutableBiMap klasa (koja slijedi obrazac graditelja):
BiMap capitalCountryBiMap = new ImmutableBiMap.Builder () .put ("New Delhi", "India") .build (); 

4. Korištenje BiMap-a

Počnimo s jednostavnim primjerom koji prikazuje upotrebu BiMap, gdje možemo dobiti ključ na temelju vrijednosti i vrijednost koja se temelji na ključu:

@Test javna praznina givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("New Delhi", "Indija"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusija"); String keyFromBiMap = capitalCountryBiMap.inverse (). Get ("Rusija"); String valueFromBiMap = capitalCountryBiMap.get ("Washington, D.C."); assertEquals ("Moskva", keyFromBiMap); assertEquals ("USA", valueFromBiMap); }

Napomena: inverzan gornja metoda vraća inverzni prikaz BiMap, koji preslikava svaku vrijednost BiMap-a na pripadajuće ključeve.

BiMap baca an IlegalArgumentException kada dva puta pokušamo pohraniti dvostruku vrijednost.

Pogledajmo primjer istog:

@Test (očekuje se = IllegalArgumentException.class) javna praznina givenBiMap_whenSameValueIsPresent_shouldThrowException () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "Indija"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusija"); capitalCountryBiMap.put ("New Delhi", "Indija"); } 

Ako želimo nadjačati vrijednost koja je već prisutna u BiMap, možemo iskoristiti forcePut metoda:

@Test javna praznina givenSameValueIsPresent_whenForcePut_completesSuccessfully () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "Indija"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moskva", "Rusija"); capitalCountryBiMap.forcePut ("New Delhi", "Indija"); assertEquals ("USA", capitalCountryBiMap.get ("Washington, D.C.")); assertEquals ("Washington, D.C.", capitalCountryBiMap.inverse (). get ("USA")); }

5. Zaključak

U ovom sažetom vodiču ilustrirali smo primjere korištenja BiMap u knjižnici Guava. Uglavnom se koristi za dobivanje ključa na temelju vrijednosti s karte.

Implementacija ovih primjera može se naći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.


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