Ú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
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
@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.