Guava - Karte

1. Pregled

U ovom uputstvu ilustrirat ćemo najkorisnije načine na koje možete iskoristite Guavu za rad s Java kartama.

Krenimo vrlo jednostavno i stvoriti HashMapbez toga novi operater, koji koristi Guavu:

Karta aNewMap = Maps.newHashMap ();

2. Nepromjenjiva karta

Dalje - da vidimo kako stvarati Nepromjenjiva karta koristeći Guava:

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

3. SortedMap

Sada - pogledajmo stvaranje i rad s a SortedMap.

U sljedećem primjeru - kreiramo razvrstanu kartu pomoću odgovarajućeg graditelja Guava:

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

4. BiMap

Dalje - razgovarajmo o tome kako koristiti BiMap. Možemo koristiti BiMap za mapiranje ključeva natrag na vrijednosti jer osigurava da su vrijednosti jedinstvene.

U sljedećem primjeru - kreiramo BiMap i što smo dobili inverzan():

@Test public void whenCreateBiMap_thenCreated () {BiMap words = HashBiMap.create (); words.put ("Prvo", 1); words.put ("Drugi", 2); words.put ("Treći", 3); assertEquals (2, words.get ("Second"). intValue ()); assertEquals ("Treće", words.inverse (). get (3)); }

5. Multimap

Sad - pogledajmo Multimap.

Možemo koristiti Multimap do pridružiti svaki ključ s više vrijednosti kao u sljedećem primjeru:

@Test public void whenCreateMultimap_thenCreated () {Multimap multimap = ArrayListMultimap.create (); multimap.put ("voće", "jabuka"); multimap.put ("voće", "banana"); multimap.put ("kućni ljubimac", "mačka"); multimap.put ("kućni ljubimac", "pas"); assertThat (multimap.get ("voće"), sadržiInAnyOrder ("jabuka", "banana")); assertThat (multimap.get ("ljubimac"), sadržiInAnyOrder ("mačka", "pas")); }

5. Stol

Pogledajmo sada Guavu Stol; koristimo Stol ako trebamo više ključeva za indeksiranje vrijednosti.

U sljedećem primjeru - koristit ćemo tablicu za pohranu udaljenosti između gradova:

@Test public void whenCreatingTable_thenCorrect () {Tablica udaljenost = HashBasedTable.create (); distance.put ("London", "Pariz", 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("London", "New York", 5576); assertEquals (3940, distance.get ("New York", "Los Angeles"). intValue ()); assertThat (distance.columnKeySet (), containsInAnyOrder ("Pariz", "New York", "Los Angeles")); assertThat (distance.rowKeySet (), containsInAnyOrder ("London", "New York")); }

Možemo i koristiti Tables.transpose () za preokretanje tipki retka i stupaca kao u sljedećem primjeru:

@Test public void whenTransposedTable_thenCorrect () {Tablica udaljenost = HashBasedTable.create (); distance.put ("London", "Pariz", 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("London", "New York", 5576); Tablica transponirana = Tables.transpose (udaljenost); assertThat (transposed.rowKeySet (), containsInAnyOrder ("Pariz", "New York", "Los Angeles")); assertThat (transposed.columnKeySet (), containsInAnyOrder ("London", "New York")); }

6. ClassToInstanceMap

Dalje - Pogledajmo ClassToInstanceMap. Možemo koristiti ClassToInstanceMap ako želimo da klasa objekta bude ključ kao u sljedećem primjeru:

@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. Grupa Popis Koristeći Multimap

Dalje - da vidimo kako grupirati a Popis koristeći Multimap. U sljedećem primjeru - grupiramo a Popis imena prema njihovoj duljini pomoću Multimaps.index ():

@Test public void whenGroupingListsUsingMultimap_thenGrouped () {Imena popisa = Lists.newArrayList ("John", "Adam", "Tom"); Funkcija func = nova funkcija () {primjenjuje se javni cijeli broj (unos niza) {return input.length (); }}; Multimap grupe = Multimaps.index (imena, funkcija); assertThat (groups.get (3), containsInAnyOrder ("Tom")); assertThat (groups.get (4), containsInAnyOrder ("Ivan", "Adam")); }

8. Zaključak

U ovom smo brzom vodiču razgovarali o najčešćim i najkorisnijim slučajevima upotrebe rad s kartama pomoću biblioteke Guava.

Implementacija svih ovih primjera i isječaka koda možete pronaći u mom projektu Guava GitHub - ovo je projekt zasnovan na Eclipseu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.