Útmutató a Guava táblázathoz

1. Áttekintés

Ebben az oktatóanyagban megmutatjuk, hogyan kell használni a Google Guava programot asztal interfész és többszörös megvalósítása.

Guava's asztal olyan gyűjtemény, amely egy táblázatos struktúrát képvisel, amely sorokat, oszlopokat és a hozzájuk tartozó cellaértékeket tartalmaz. A sor és az oszlop rendezett kulcspárként működik.

2. Google Guava's asztal

Vessünk egy pillantást a asztal osztály.

2.1. Maven-függőség

Kezdjük azzal, hogy hozzáadjuk a Google Guava könyvtárfüggőségét a pom.xml:

 com.google.guava guava 29.0-jre 

A függőség legfrissebb verziója itt ellenőrizhető.

2.2. Ról ről

Ha Guava-t képviselnénk asztal felhasználásával Gyűjtemények jelen van a Java magban, akkor a struktúra egy sorok térképe lenne, ahol minden sor oszlopok térképét tartalmazza a hozzá tartozó cellaértékekkel.

asztal egy speciális térképet képvisel, ahol két kulcs kombinált módon adható meg, egyetlen értékre utalva.

Hasonló, mint például a térképek térképének létrehozása, Térkép. asztal tökéletes módja lenne a Csatahajók játéktáblájának képviseletére is.

3. Teremtés

Létrehozhat egy példányt asztal többféle módon:

  • Használni a teremt módszer az osztályból HashBasedTable amely felhasználja LinkedHashMap belsőleg:
    Table universityCourseSeatTable = HashBasedTable.create ();
  • Ha szükségünk van a asztal akiknek sor- és oszlopkulcsait természetes sorrendjük szerint vagy összehasonlító elemekkel kell megrendelni, létrehozhatunk egy asztal használni a teremt nevű osztályból TreeBasedTable, amely felhasználja TreeMap belsőleg:
    Table universityCourseSeatTable = TreeBasedTable.create (); 
  • Ha a sorok és az oszlopok kulcsát előzetesen tudjuk, és a táblázat mérete rögzített, akkor használja a teremt módszer az osztályból ArrayTable:
    List universityRowTable = Lists.newArrayList ("Mumbai", "Harvard"); List courseColumnTables = Lists.newArrayList ("Chemical", "IT", "Electrical"); Table universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables); 
  • Ha változatlan példányt kívánunk létrehozni asztal amelynek belső adatai soha nem fognak megváltozni, használja a ImmutableTable osztály (létrehozása, amely egy készítő mintát követ):
    Table universityCourseSeatTable = ImmutableTable. builder () .put ("Mumbai", "Chemical", 120) .build (); 

4. Használata

Kezdjük egy egyszerű példával, amely bemutatja a asztal.

4.1. Visszakeresés

Ha ismerjük a sorkulcsot és az oszlopkulcsot, akkor megkapjuk a sorhoz és az oszlopkulcshoz tartozó értéket:

@Test public void givenTable_whenGet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); int seatCount = universityCourseSeatTable.get ("Mumbai", "IT"); Integer seatCountForNoEntry = universityCourseSeatTable.get ("Oxford", "IT"); assertThat (ülésszám) .isEqualTo (60); assertThat (seatCountForNoEntry) .isEqualTo (null); }

4.2. Bejegyzés ellenőrzése

Ellenőrizhetjük a bejegyzés meglétét a asztal alapján:

  • Sor gomb
  • Oszlopkulcs
  • Sor- és oszlopkulcs egyaránt
  • Érték

Nézzük meg, hogyan lehet ellenőrizni egy bejegyzés jelenlétét:

@Test public void givenTable_whenContains_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); logikai bejegyzésIsPresent = universityCourseSeatTable.contains ("Mumbai", "IT"); logikai tanfolyamIsPresent = universityCourseSeatTable.containsColumn ("IT"); logikai egyetemIsPresent = universityCourseSeatTable.containsRow ("Mumbai"); logikai ülésCountIsPresent = universityCourseSeatTable.containsValue (60); assertThat (entryIsPresent) .isEqualTo (true); assertThat (courseIsPresent) .isEqualTo (true); assertThat (universityIsPresent) .isEqualTo (true); assertThat (seatCountIsPresent) .isEqualTo (true); }

4.3. Eltávolítás

Eltávolíthatunk egy bejegyzést a asztal a sorkulcs és az oszlopkulcs megadásával:

@Test public void givenTable_whenRemove_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); int seatCount = universityCourseSeatTable.remove ("Mumbai", "IT"); assertThat (ülésszám) .isEqualTo (60); assertThat (universityCourseSeatTable.remove ("Mumbai", "IT")). isEqualTo (null); } 

4.4. Sor kulcsa a cellaérték-térképhez

Kaphatunk egy Térkép ábrázolás a kulccsal mint sorral és az értékkel mint a CellValue az oszlopkulcs megadásával:

@Test public void givenTable_whenColumn_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Térkép universitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("Mumbai")). isEqualTo (60); assertThat (universitySeatMap.get ("Harvard")). isEqualTo (120); } 

4.5. Térkép ábrázolása a asztal

Kaphatunk egy Térkép ábrázolás a oszlopTérkép módszer:

@Test public void givenTable_whenColumnMap_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Térkép courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("Elektromos")). hasSize (1); assertThat (courseKeyUniversitySeatMap.get ("Chemical")). hasSize (1); } 

4.6. Oszlopkulcs a cellaérték-térképhez

Kaphatunk egy Térkép ábrázolás a kulccsal oszlopként, az érték pedig a CellValue sorkulcs megadásával:

@Test public void givenTable_whenRow_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); TérképtanfolyamSeatMap = universityCourseSeatTable.row ("Mumbai"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). isEqualTo (60); assertThat (courseSeatMap.get ("Chemical")). isEqualTo (120); } 

4.7. Get Distinct Row Key

Az összes sorkulcsot megkaphatjuk egy táblázatból a rowKeySet módszer:

@Test public void givenTable_whenRowKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Set universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); } 

4.8. Get Distinct Column Key

Az összes oszlopkulcsot megkaphatjuk egy táblázatból a columnKeySet módszer:

@Test public void givenTable_whenColKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Set courseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); } 

5. Következtetés

Ebben az oktatóanyagban bemutattuk a asztal osztály a guavai könyvtárból. A asztal osztály olyan gyűjteményt nyújt, amely egy táblázatos szerkezetet képvisel, amely sorokat, oszlopokat és a hozzájuk tartozó cellák értékeit tartalmazza.

A fenti példákhoz tartozó kód megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.