Ú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.