Guava - Mapy

1. Prehľad

V tomto výučbe si ukážeme najužitočnejšie spôsoby, ktoré môžete využite Guava na prácu s mapami Java.

Začnime veľmi jednoducho a Vytvor HashMapbez Nový operátor pomocou Guava:

Mapa aNewMap = Maps.newHashMap ();

2. ImmutableMap

Ďalej - pozrime sa, ako vytvárať ImmutableMap použitím Guava:

@Test public void whenCreatingImmutableMap_thenCorrect () {Map plat = ImmutableMap. builder () .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000) .put ("Tom", 2000) .build (); assertEquals (1000, plat.get ("John"). intValue ()); assertEquals (2000, plat.get ("Tom"). intValue ()); }

3. SortedMap

Teraz - poďme sa pozrieť na vytváranie a prácu s SortedMap.

V nasledujúcom príklade - vytvárame triedenú mapu pomocou zodpovedajúceho nástroja na tvorbu Guava:

@Test public void whenUsingSortedMap_thenKeysAreSorted () {ImmutableSortedMap plat = new ImmutableSortedMap .Builder (Ordering.natural ()) .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000). put ("Tom", 2000) .build (); assertEquals ("Adam", plat.firstKey ()); assertEquals (2000, plat.lastEntry (). getValue (). intValue ()); }

4. BiMap

Ďalej - poďme diskutovať o tom, ako sa používa BiMap. Môžeme použiť BiMap na mapovanie kľúčov späť na hodnoty, pretože sa tak zabezpečí, že sú hodnoty jedinečné.

V nasledujúcom príklade - vytvoríme a BiMap a dostaneme jeho inverzná ():

@Test public void whenCreateBiMap_thenCreated () {BiMap words = HashBiMap.create (); words.put ("Prvý", 1); words.put ("Druhý", 2); words.put ("Tretí", 3); assertEquals (2, words.get ("Second"). intValue ()); assertEquals ("Tretí", words.inverse (). get (3)); }

5. Multimap

Teraz - poďme sa na to pozrieť Multimap.

Môžeme použiť Multimap do priradiť každý kľúč k viacerým hodnotám ako v nasledujúcom príklade:

@Test public void whenCreateMultimap_thenCreated () {Multimap multimap = ArrayListMultimap.create (); multimap.put ("ovocie", "jablko"); multimap.put ("ovocie", "banan"); multimap.put ("domáce zviera", "mačka"); multimap.put ("pet", "pes"); assertThat (multimap.get ("ovocie"), containsInAnyOrder ("jablko", "banán")); assertThat (multimap.get ("pet"), containsInAnyOrder ("mačka", "pes")); }

5. Tabuľka

Poďme sa teraz pozrieť na Guavu Tabuľka; používame Tabuľka ak potrebujeme viac ako jeden kľúč na indexovanie hodnoty.

V nasledujúcom príklade - použijeme tabuľku na uloženie vzdialeností medzi mestami:

@Test public void whenCreatingTable_thenCorrect () {Table distance = HashBasedTable.create (); distance.put („Londýn“, „Paríž“, 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("Londýn", "New York", 5576); assertEquals (3940, distance.get ("New York", "Los Angeles"). intValue ()); assertThat (distance.columnKeySet (), containsInAnyOrder ("Paríž", "New York", "Los Angeles")); assertThat (distance.rowKeySet (), containsInAnyOrder ("Londýn", "New York")); }

Môžeme tiež použiť Tables.transpose () na preklopenie klávesov riadkov a stĺpcov ako v nasledujúcom príklade:

@Test public void whenTransposingTable_thenCorrect () {Table distance = HashBasedTable.create (); distance.put („Londýn“, „Paríž“, 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("Londýn", "New York", 5576); Transponovaná tabuľka = Tabuľky. Transpozícia (vzdialenosť); assertThat (transposed.rowKeySet (), containsInAnyOrder ("Paríž", "New York", "Los Angeles")); assertThat (transposed.columnKeySet (), containsInAnyOrder ("Londýn", "New York")); }

6. ClassToInstanceMap

Ďalej - poďme sa na to pozrieť ClassToInstanceMap. Môžeme použiť ClassToInstanceMap ak chceme, aby kľúčom bola trieda objektu, ako v nasledujúcom príklade:

@Test public void whenCreatingClassToInstanceMap_thenCorrect () {ClassToInstanceMap numbers = MutableClassToInstanceMap.create (); numbers.putInstance (Integer.class, 1); numbers.putInstance (Double.class, 1,5); assertEquals (1, numbers.get (Integer.class)); assertEquals (1.5, numbers.get (Double.class)); }

7. Zoskupiť Zoznam Použitím Multimap

Ďalej - pozrime sa, ako zoskupiť a Zoznam použitím Multimap. V nasledujúcom príklade - zoskupujeme a Zoznam mien podľa dĺžky pomocou Multimaps.index ():

@Test public void whenGroupingListsUsingMultimap_thenGrouped () {List names = Lists.newArrayList ("John", "Adam", "Tom"); Funkcia func = new Function () {public Integer apply (String input) {return input.length (); }}; Skupiny multimap = Multimaps.index (names, func); assertThat (groups.get (3), containsInAnyOrder ("Tom")); assertThat (groups.get (4), containsInAnyOrder ("John", "Adam")); }

8. Záver

V tomto rýchlom návode sme rozobrali najbežnejšie a najužitočnejšie prípady použitia práca s Mapami pomocou knižnice Guava.

Implementácia všetkých týchto príkladov a útržkov kódu nájdete v mojom projekte Guava GitHub - toto je projekt založený na Eclipse, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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