Útmutató a Guava BiMap-hoz

1. Áttekintés

Ebben az oktatóanyagban megmutatjuk, hogyan kell használni a Google Guava programot BiMap interfész és többszörös megvalósítása.

A BiMap (vagy „kétirányú térkép”) a térkép egy speciális fajtája, amely megfordítja a térkép inverz nézetét, miközben biztosítja, hogy ne legyenek ismétlődő értékek, és egy érték mindig biztonságosan használható a kulcs visszaszerzéséhez.

A program alapvető megvalósítása BiMap van HashBiMap ahol belsőleg kettőt használ Térképs, az egyik az értékleképezéshez szükséges kulcshoz, a másik pedig az értékleképezéshez.

2. Google Guava's BiMap

Vessünk egy pillantást a BiMap osztály.

Először hozzáadjuk a Google Guava könyvtár függőségét a pom.xml:

 com.google.guava guava 21.0 

A függőség legfrissebb verziója itt ellenőrizhető.

3. BiMap készítése

Létrehozhat egy példányt BiMap többféle módon, az alábbiak szerint:

  • Ha egyedi Java objektummal fog foglalkozni, használja a teremt módszer a HashBiMap osztályból:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • Ha már létezik térképünk, létrehozhat egy példányt a-ról BiMap a. túlterhelt verziójának használatával teremt módszer egy osztályból HashBiMap:
Térkép capitalCountryBiMap = új HashMap (); // ... HashBiMap.create (capitalCountryBiMap); 
  • Ha egy típusú kulccsal fog foglalkozni Enum, használja a teremt módszer az osztályból EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • Ha megváltoztathatatlan térképet kíván létrehozni, használja a ImmutableBiMap osztály (amely építői mintát követ):
BiMap capitalCountryBiMap = new ImmutableBiMap.Builder () .put ("New Delhi", "India") .build (); 

4. A BiMap használata

Kezdjük egy egyszerű példával, amely bemutatja a BiMap, ahol megszerezhetünk egy kulcsot egy érték alapján és egy értéket egy kulcs alapján:

@Test public void givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Újdelhi", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moszkva", "Oroszország"); String keyFromBiMap = capitalCountryBiMap.inverse (). Get ("Oroszország"); String valueFromBiMap = capitalCountryBiMap.get ("Washington, D.C."); assertEquals ("Moszkva", keyFromBiMap); assertEquals ("USA", valueFromBiMap); }

Megjegyzés: a fordított A fenti módszer a BiMap, amely feltérképezi a BiMap egyes értékeit a hozzájuk tartozó kulcsokhoz.

BiMap dob egy IllegalArgumentException amikor kétszer megpróbálunk duplikált értéket tárolni.

Lássunk egy példát ugyanerre:

@Test (várható = IllegalArgumentException.class) public void givenBiMap_whenSameValueIsPresent_shouldThrowException () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moszkva", "Oroszország"); capitalCountryBiMap.put ("Újdelhi", "India"); } 

Ha felül akarjuk írni a már meglévő értéket BiMap, használhatjuk a forcePut módszer:

@Test public void givenSameValueIsPresent_whenForcePut_completesSuccessfully () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("Mumbai", "India"); capitalCountryBiMap.put ("Washington, D.C.", "USA"); capitalCountryBiMap.put ("Moszkva", "Oroszország"); capitalCountryBiMap.forcePut ("Újdelhi", "India"); assertEquals ("USA", capitalCountryBiMap.get ("Washington, D.C.")); assertEquals ("Washington, D.C.", capitalCountryBiMap.inverse (). get ("USA")); }

5. Következtetés

Ebben a tömör bemutatóban példákat illusztráltunk a BiMap a guavai könyvtárban. Főleg arra használják, hogy kulcsot kapjanak a térképen szereplő érték alapján.

Ezeknek a példáknak a megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.