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.