Guava - Kort

1. Oversigt

I denne vejledning illustrerer vi de mest nyttige måder, du kan udnytte Guava til at arbejde med Java Maps.

Lad os starte meget simpelt og lave en HashMapuden ny operatør ved hjælp af Guava:

Kort aNewMap = Maps.newHashMap ();

2. ImmutableMap

Næste - lad os se, hvordan du opretter ImmutableMap ved brug af Guava:

@Test offentlig ugyldig nårCreatingImmutableMap_thenCorrect () {Map løn = ImmutableMap. builder () .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000) .put ("Tom", 2000) .build (); assertEquals (1000, løn.get ("John"). intValue ()); assertEquals (2000, løn.get ("Tom"). intValue ()); }

3. SortedMap

Lad os nu se på at skabe og arbejde med en SortedMap.

I det følgende eksempel opretter vi et sorteret kort ved hjælp af den tilsvarende Guava-builder:

@Test offentlig ugyldig nårUsingSortedMap_thenKeysAreSorted () {ImmutableSortedMap løn = ny ImmutableSortedMap .Builder (Ordering.natural ()) .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000). put ("Tom", 2000) .build (); assertEquals ("Adam", løn.firstKey ()); assertEquals (2000, løn.lastEntry (). getValue (). intValue ()); }

4. BiMap

Næste - lad os diskutere, hvordan man bruger BiMap. Vi kan bruge BiMap for at kortlægge tasterne tilbage til værdier, da det sikrer, at værdierne er unikke.

I det følgende eksempel opretter vi en BiMap og vi får det omvendt ():

@Test offentligt ugyldigt nårCreateBiMap_thenCreated () {BiMap ord = HashBiMap.create (); words.put ("First", 1); words.put ("Second", 2); words.put ("Tredje", 3); assertEquals (2, words.get ("Second"). intValue ()); assertEquals ("Tredje", ord. omvendt (). get (3)); }

5. Multimap

Lad os nu se på Multimap.

Vi kan bruge Multimap til knytte hver nøgle til flere værdier som i følgende eksempel:

@Test offentligt ugyldigt nårCreateMultimap_thenCreated () {Multimap multimap = ArrayListMultimap.create (); multimap.put ("frugt", "æble"); multimap.put ("frugt", "banan"); multimap.put ("pet", "cat"); multimap.put ("kæledyr", "hund"); assertThat (multimap.get ("frugt"), indeholderInAnyOrder ("æble", "banan")); assertThat (multimap.get ("pet"), indeholderInAnyOrder ("kat", "hund")); }

5. Bord

Lad os nu se på Guava Bord; vi bruger Bord hvis vi har brug for det mere end en nøgle til at indeksere en værdi.

I det følgende eksempel skal vi bruge en tabel til at gemme afstanden mellem byer:

@Test offentlig ugyldig nårCreatingTable_thenCorrect () {Tabelafstand = HashBasedTable.create (); distance.put ("London", "Paris", 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 (), indeholderInAnyOrder ("Paris", "New York", "Los Angeles")); assertThat (distance.rowKeySet (), indeholderInAnyOrder ("London", "New York")); }

Vi kan også bruge Tables.transpose () at vende række- og kolonnetasterne som i følgende eksempel:

@Test offentlig ugyldig nårTransposingTable_thenCorrect () {Tabelafstand = HashBasedTable.create (); distance.put ("London", "Paris", 340); distance.put ("New York", "Los Angeles", 3940); distance.put ("London", "New York", 5576); Transponeret tabel = Tables.transpose (afstand); assertThat (transposed.rowKeySet (), indeholderInAnyOrder ("Paris", "New York", "Los Angeles")); assertThat (transposed.columnKeySet (), indeholderInAnyOrder ("London", "New York")); }

6. ClassToInstanceMap

Næste - Lad os se på ClassToInstanceMap. Vi kan bruge ClassToInstanceMap hvis vi vil have objektets klasse til at være nøglen som i følgende eksempel:

@Test offentlig ugyldig nårCreatingClassToInstanceMap_thenCorrect () {ClassToInstanceMap numbers = MutableClassToInstanceMap.create (); numbers.putInstance (heltal.klasse, 1); numbers.putInstance (Double.class, 1.5); assertEquals (1, numbers.get (Integer.class)); assertEquals (1.5, numbers.get (Double.class)); }

7. Gruppe Liste Ved brug af Multimap

Næste - lad os se, hvordan man grupperer a Liste ved brug af Multimap. I det følgende eksempel grupperer vi a Liste af navne efter deres længde ved hjælp af Multimaps.index ():

@Test offentlig ugyldigt nårGroupingListsUsingMultimap_thenGrouped () {List names = Lists.newArrayList ("John", "Adam", "Tom"); Funktion func = ny funktion () {public Integer apply (String input) {return input.length (); }}; Multimap-grupper = Multimaps.index (navne, func); assertThat (groups.get (3), indeholderInAnyOrder ("Tom")); assertThat (group.get (4), indeholderInAnyOrder ("John", "Adam")); }

8. Konklusion

I denne hurtige vejledning diskuterede vi de mest almindelige og nyttige anvendelser af arbejde med Maps ved hjælp af Guava-biblioteket.

Implementeringen af ​​alle disse eksempler og kodestykker kan findes i mit Guava GitHub-projekt - dette er et Eclipse-baseret projekt, så det skal være let at importere og køre som det er.


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