Sprievodca tabuľkou Guava

1. Prehľad

V tomto tutoriáli si ukážeme, ako používať Google Guava Tabuľka rozhranie a jeho viacnásobné implementácie.

Guava Tabuľka je kolekcia, ktorá predstavuje štruktúru podobnú tabuľke obsahujúcu riadky, stĺpce a súvisiace hodnoty buniek. Riadok a stĺpec fungujú ako usporiadaná dvojica kľúčov.

2. Google Guava Tabuľka

Poďme sa pozrieť na to, ako používať Tabuľka trieda.

2.1. Maven závislosť

Začnime pridaním závislosti knižnice Guava od spoločnosti Google na serveri pom.xml:

 com.google.guava guava 29.0-jre 

Najnovšiu verziu závislosti si môžete skontrolovať tu.

2.2. O

Keby sme mali zastupovať Guavu Tabuľka použitím Zbierky ak je prítomný v jadre Javy, potom by štruktúrou bola mapa riadkov, kde každý riadok obsahuje mapu stĺpcov s pridruženými hodnotami buniek.

Tabuľka predstavuje špeciálnu mapu, kde je možné kombinovať dva kľúče odkazujúce na jednu hodnotu.

Je to podobné ako pri vytváraní mapy máp, napríklad Mapa. Tabuľka by bol tiež dokonalým spôsobom predstavenia herného plánu Battleships.

3. Tvorba

Môžete vytvoriť inštanciu Tabuľka niekoľkými spôsobmi:

  • Pomocou vytvoriť metóda z triedy HashBasedTable ktorý používa LinkedHashMap interne:
    Tabuľka universityCourseSeatTable = HashBasedTable.create ();
  • Ak potrebujeme a Tabuľka ktorých kľúče riadkov a kľúčov stĺpcov je potrebné zoradiť podľa ich prirodzeného usporiadania alebo zadaním komparátorov, môžete vytvoriť inštanciu Tabuľka pomocou vytvoriť metóda z triedy s názvom Tabuľka TreeBased, ktorý používa TreeMap interne:
    Tabuľka universityCourseSeatTable = TreeBasedTable.create (); 
  • Ak poznáme kľúče riadkov a stĺpcov vopred a veľkosť tabuľky je pevná, použite klávesu vytvoriť metóda z triedy ArrayTable:
    Zoznam universityRowTable = Lists.newArrayList ("Mumbai", "Harvard"); List courseColumnTables = Lists.newArrayList ("Chemical", "IT", "Electrical"); Tabuľka universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables); 
  • Ak máme v úmysle vytvoriť nemennú inštanciu Tabuľka ktorých interné údaje sa nikdy nezmenia, použite ImmutableTable trieda (tvorba, ktorá sa riadi vzorom staviteľa):
    Tabuľka universityCourseSeatTable = ImmutableTable. builder () .put ("Mumbai", "Chemical", 120) .build (); 

4. Používanie

Začnime jednoduchým príkladom znázorňujúcim použitie Tabuľka.

4.1. Získanie

Ak poznáme kľúč riadku a kľúč stĺpca, môžeme získať hodnotu spojenú s riadkom a kľúčom stĺpca:

@Test public void givenTable_whenGet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); int seatCount = universityCourseSeatTable.get ("Bombaj", "IT"); Celé číslo seatCountForNoEntry = universityCourseSeatTable.get ("Oxford", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (seatCountForNoEntry) .isEqualTo (null); }

4.2. Prebieha kontrola vstupu

Môžeme skontrolovať prítomnosť záznamu v a Tabuľka založené na:

  • Kľúč riadku
  • Kľúč stĺpca
  • Kľúč riadku aj stĺpca
  • Hodnota

Pozrime sa, ako skontrolovať prítomnosť záznamu:

@Test public void givenTable_whenContains_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrické", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); boolean entryIsPresent = universityCourseSeatTable.contains ("Bombaj", "IT"); boolean courseIsPresent = universityCourseSeatTable.containsColumn ("IT"); boolean universityIsPresent = universityCourseSeatTable.containsRow ("Bombaj"); boolean seatCountIsPresent = universityCourseSeatTable.containsValue (60); assertThat (entryIsPresent) .isEqualTo (true); assertThat (courseIsPresent) .isEqualTo (true); assertThat (universityIsPresent) .isEqualTo (true); assertThat (seatCountIsPresent) .isEqualTo (true); }

4.3. Odstránenie

Môžeme odstrániť záznam z Tabuľka zadaním kľúča riadku aj stĺpca:

@Test public void givenTable_whenRemove_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); int seatCount = universityCourseSeatTable.remove ("Bombaj", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (universityCourseSeatTable.remove ("Bombaj", "IT")). isEqualTo (null); } 

4.4. Mapa kľúča k hodnote bunky v riadku

Môžeme dostať a Mapa reprezentácia s kľúčom ako riadkom a hodnotou ako a CellValue zadaním kľúča stĺpca:

@Test public void givenTable_whenColumn_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Mapa universitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("Bombaj")). isEqualTo (60); assertThat (universitySeatMap.get ("Harvard")). isEqualTo (120); } 

4.5. Mapové znázornenie a Tabuľka

Môžeme dostať a Mapa zastúpenie pomocou columnMap metóda:

@Test public void givenTable_whenColumnMap_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Mapa courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("Elektrické")). hasSize (1); assertThat (courseKeyUniversitySeatMap.get ("Chemický")). hasSize (1); } 

4.6. Mapa stĺpca kľúča k hodnote bunky

Môžeme dostať a Mapa reprezentácia s kľúčom ako stĺpcom a hodnotou ako a CellValue zadaním kľúča riadku:

@Test public void givenTable_whenRow_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Mapa courseSeatMap = universityCourseSeatTable.row ("Bombaj"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). isEqualTo (60); assertThat (courseSeatMap.get ("Chemické")). isEqualTo (120); } 

4.7. Získajte výrazný kľúč riadku

Všetky kľúče riadkov môžeme získať z tabuľky pomocou príkazu rowKeySet metóda:

@Test public void givenTable_whenRowKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrické", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Nastaviť universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); } 

4.8. Získajte výrazný kľúč od stĺpca

Všetky kľúče od stĺpcov môžeme získať z tabuľky pomocou znaku columnKeySet metóda:

@Test public void givenTable_whenColKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Bombaj", "Chemikália", 120); universityCourseSeatTable.put ("Bombaj", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrické", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Nastaviť CourseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); } 

5. Záver

V tomto tutoriáli sme ilustrovali metódy Tabuľka triedy z knižnice Guava. The Tabuľka trieda poskytuje kolekciu, ktorá predstavuje tabuľku ako štruktúra obsahujúca riadky, stĺpce a súvisiace hodnoty buniek.

Kód patriaci k vyššie uvedeným príkladom možno nájsť v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


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