Guava - Térképek

1. Áttekintés

Ebben az oktatóanyagban bemutatjuk a leghasznosabb módokat kihasználja a Guava-t a Java Maps használatához.

Kezdjük nagyon egyszerű és hozzon létre egy HashMapa nélkül új operátor, Guava használatával:

Térkép aNewMap = Maps.newHashMap ();

2. ImmutableMap

Következő - nézzük meg, hogyan lehet létrehozni ImmutableMap felhasználásával Gujávafa:

@Test public void whenCreatingImmutableMap_thenCorrect () {Térképbér = ImmutableMap. builder () .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000) .put ("Tom", 2000) .build (); assertEquals (1000, fizetés.get ("John"). intValue ()); assertEquals (2000, fizetés.get ("Tom"). intValue ()); }

3. SortedMap

Most - vessünk egy pillantást a SortedMap.

A következő példában - rendezett térképet készítünk a megfelelő guava-készítő segítségével:

@Test public void whenUsingSortedMap_thenKeysAreSorted () {ImmutableSortedMap fizetés = new ImmutableSortedMap .Builder (Ordering.natural ()) .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000). put ("Tom", 2000) .építés (); assertEquals ("Ádám", fizetés.elsőKulcs ()); assertEquals (2000, fizetés.utolsóEntry (). getValue (). intValue ()); }

4. BiMap

Ezután - beszéljük meg, hogyan kell használni BiMap. Tudjuk használni BiMap a kulcsokat visszaadni az értékekhez, mivel ez biztosítja, hogy az értékek egyediek legyenek.

A következő példában - létrehozunk egy BiMap és mi megkapjuk inverz ():

@Test public void whenCreateBiMap_thenCreated () {BiMap words = HashBiMap.create (); words.put ("Első", 1); words.put ("Második", 2); words.put ("Harmadik", 3); assertEquals (2, words.get ("Second"). intValue ()); assertEquals ("Harmadik", szavak.inverz (). get (3)); }

5. Multimap

Most - vessünk egy pillantást Multimap.

Tudjuk használni Multimap nak nek társítsa az egyes kulcsokat több értékkel mint a következő példában:

@Test public void whenCreateMultimap_thenCreated () {Multimap multimap = ArrayListMultimap.create (); multimap.put ("gyümölcs", "alma"); multimap.put ("gyümölcs", "banán"); multimap.put ("háziállat", "macska"); multimap.put ("háziállat", "kutya"); assertThat (multimap.get ("gyümölcs"), tartalmazzaInAnyOrder ("alma", "banán")); assertThat (multimap.get ("kisállat"), tartalmazzaInAnyOrder ("macska", "kutya")); }

5. asztal

Vessünk egy pillantást a Guava-ra asztal; használunk asztal ha szükségünk van rá egynél több kulcs az érték indexeléséhez.

A következő példában - egy táblázatot fogunk használni a városok közötti távolságok tárolására:

@Test public void whenCreatingTable_thenCorrect () {Table distance = HashBasedTable.create (); távolság. bemenet ("London", "Párizs", 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("London", "New York", 5576); assertEquals (3940, távolság.get ("New York", "Los Angeles"). intValue ()); assertThat (távolság.oszlopKeySet (), tartalmazzaInAnyOrder ("Párizs", "New York", "Los Angeles")); assertThat (distance.rowKeySet (), tartalmazzaInAnyOrder ("London", "New York")); }

Használhatjuk is Tables.transpose () a sor- és oszlopkulcsok elfordításához a következő példa szerint:

@Test public void whenTransposingTable_thenCorrect () {Table distance = HashBasedTable.create (); távolság. bemenet ("London", "Párizs", 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("London", "New York", 5576); Táblázat átültetve = Táblák.transzpozíció (távolság); assertThat (transposed.rowKeySet (), tartalmazzaInAnyOrder ("Párizs", "New York", "Los Angeles")); assertThat (átültetve.columnKeySet (), tartalmazzaInAnyOrder ("London", "New York")); }

6. ClassToInstanceMap

Következő - Vessünk egy pillantást ClassToInstanceMap. Tudjuk használni ClassToInstanceMap ha azt akarjuk, hogy az objektum osztálya legyen a kulcs, mint a következő példában:

@Test public void whenCreatingClassToInstanceMap_thenCorrect () {ClassToInstanceMap számok = MutableClassToInstanceMap.create (); számok. inputInstance (Egész szám.osztály, 1); számok. inputInstance (Dupla osztály, 1.5); assertEquals (1, számok.get (Egész.osztály)); assertEquals (1.5, számok.get (Duplaosztály)); }

7. Csoport Lista Használata Multimap

Következő - nézzük meg, hogyan lehet a csoportosítani Lista felhasználásával Multimap. A következő példában - csoportosítjuk a Lista nevek hossza szerint felhasználva Multimaps.index ():

@Test public void whenGroupingListsUsingMultimap_thenGrouped () {List names = Lists.newArrayList ("John", "Adam", "Tom"); Func = new Funkció () {public Integer Apply (String input) {return input.length (); }}; Multimap csoportok = Multimaps.index (nevek, func); assertThat (groups.get (3), tartalmazzaInAnyOrder ("Tom")); assertThat (csoportok.get (4), tartalmazzaInAnyOrder ("John", "Adam")); }

8. Következtetés

Ebben a gyors bemutatóban megvitattuk a leggyakoribb és leghasznosabb felhasználási eseteket a Maps alkalmazással dolgozik a Guava könyvtár segítségével.

Mindezen példák és kódrészletek megvalósítása megtalálható a Guava GitHub projektemben - ez egy Eclipse-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.


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