Gids voor Guava-tafel
1. Overzicht
In deze tutorial laten we zien hoe je de Google Guava's kunt gebruiken Tafel interface en zijn meerdere implementaties.
Guava's Tafel is een verzameling die een tabelachtige structuur vertegenwoordigt met rijen, kolommen en de bijbehorende celwaarden. De rij en de kolom fungeren als een geordend paar sleutels.
2. Google Guava's Tafel
Laten we eens kijken hoe u de Tafel klasse.
2.1. Afhankelijkheid van Maven
Laten we beginnen met het toevoegen van de Guava-bibliotheekafhankelijkheid van Google in het pom.xml:
com.google.guava guave 29.0-jre
De laatste versie van de afhankelijkheid kan hier worden gecontroleerd.
2.2. Over
Als we Guava's zouden vertegenwoordigen Tafel gebruik makend van Collecties aanwezig in kern Java, dan zou de structuur een kaart van rijen zijn waarbij elke rij een kaart van kolommen bevat met bijbehorende celwaarden.
Tafel vertegenwoordigt een speciale kaart waar twee sleutels gecombineerd kunnen worden gespecificeerd om naar een enkele waarde te verwijzen.
Het is vergelijkbaar met het maken van een kaart met kaarten, bijvoorbeeld Kaart
3. Creëren
U kunt een instantie van Tafel op meerdere manieren:
- De ... gebruiken creëren methode uit de klas HashBasedTable welke gebruikt LinkedHashMap intern:
Tabel universityCourseSeatTable = HashBasedTable.create ();
- Als we een Tafel waarvan de rijtoetsen en de kolomtoetsen moeten worden geordend op hun natuurlijke volgorde of door vergelijkers te leveren, kunt u een instantie van een Tafel de ... gebruiken creëren methode uit een klasse genaamd TreeBasedTable, die gebruikt TreeMap intern:
Tabel universityCourseSeatTable = TreeBasedTable.create ();
- Als we de rijtoetsen en de kolomtoetsen van tevoren kennen en de tabelgrootte is vast, gebruik dan de creëren methode uit de klas ArrayTable:
List universityRowTable = Lists.newArrayList ("Mumbai", "Harvard"); List courseColumnTables = Lists.newArrayList ("Chemisch", "IT", "Elektrisch"); Tabel universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables);
- Als we van plan zijn een onveranderlijke instantie van Tafel waarvan de interne gegevens nooit zullen veranderen, gebruikt u de Onveranderlijke tabel class (creëren die een bouwerspatroon volgt):
Tabel universityCourseSeatTable = ImmutableTable. builder () .put ("Mumbai", "Chemical", 120) .build ();
4. Met behulp van
Laten we beginnen met een eenvoudig voorbeeld dat het gebruik van Tafel.
4.1. Ophalen
Als we de rijsleutel en de kolomsleutel kennen, kunnen we de waarde krijgen die is gekoppeld aan de rij en de kolomsleutel:
@Test openbare leegte gegevenTable_whenGet_returnsSuccessfully () {Tafel 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"); Geheel getal seatCountForNoEntry = universityCourseSeatTable.get ("Oxford", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (seatCountForNoEntry) .isEqualTo (null); }
4.2. Controleren op een vermelding
We kunnen de aanwezigheid van een vermelding in een Tafel gebaseerd op:
- Rij-toets
- Kolom-toets
- Zowel de rijtoets als de kolomtoets
- Waarde
Laten we eens kijken hoe we kunnen controleren op de aanwezigheid van een item:
@Test openbare leegte gegevenTable_whenContains_returnsSuccessfully () {Tafel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); boolean entryIsPresent = universityCourseSeatTable.contains ("Mumbai", "IT"); boolean courseIsPresent = universityCourseSeatTable.containsColumn ("IT"); boolean universityIsPresent = universityCourseSeatTable.containsRow ("Mumbai"); boolean seatCountIsPresent = universityCourseSeatTable.containsValue (60); assertThat (entryIsPresent) .isEqualTo (true); assertThat (courseIsPresent) .isEqualTo (true); assertThat (universityIsPresent) .isEqualTo (true); assertThat (seatCountIsPresent) .isEqualTo (true); }
4.3. Verwijdering
We kunnen een vermelding verwijderen uit het Tafel door zowel de rijsleutel als de kolomsleutel op te geven:
@Test openbare leegte gegevenTable_whenRemove_returnsSuccessfully () {Tafel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); int seatCount = universityCourseSeatTable.remove ("Mumbai", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (universityCourseSeatTable.remove ("Mumbai", "IT")). isEqualTo (null); }
4.4. Rij Sleutel tot celwaardetoewijzing
We kunnen een Kaart weergave met de sleutel als een rij en de waarde als een CellValue door de kolomsleutel op te geven:
@Test openbare leegte gegevenTable_whenColumn_returnsSuccessfully () {Tabel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kaart universitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("Mumbai")). isEqualTo (60); assertThat (universitySeatMap.get ("Harvard")). isEqualTo (120); }
4.5. Kaartweergave van een Tafel
We kunnen een Kaart
@Test openbare leegte gegevenTable_whenColumnMap_returnsSuccessfully () {Tabel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kaart courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("Electrical")). hasSize (1); assertThat (courseKeyUniversitySeatMap.get ("Chemical")). hasSize (1); }
4.6. Kolomsleutel tot celwaardetoewijzing
We kunnen een Kaart weergave met de sleutel als een kolom en de waarde als een CellValue door de rijsleutel op te geven:
@Test openbare leegte gegevenTable_whenRow_returnsSuccessfully () {Tafel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kaart courseSeatMap = universityCourseSeatTable.row ("Mumbai"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). isEqualTo (60); assertThat (courseSeatMap.get ("Chemical")). isEqualTo (120); }
4.7. Verkrijg een onderscheidende rijsleutel
We kunnen alle rijsleutels uit een tabel halen met behulp van de rowKeySet methode:
@Test openbare leegte gegevenTable_whenRowKeySet_returnsSuccessfully () {Tabel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Stel universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); }
4.8. Krijg een duidelijke kolomsleutel
We kunnen alle kolomsleutels uit een tabel halen met behulp van de columnKeySet methode:
@Test openbare leegte gegevenTable_whenColKeySet_returnsSuccessfully () {Tabel universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Stel courseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); }
5. Conclusie
In deze zelfstudie hebben we de methoden van de Tafel klasse uit de Guava-bibliotheek. De Tafel class biedt een verzameling die een tabelachtige structuur vertegenwoordigt met rijen, kolommen en bijbehorende celwaarden.
De code die bij de bovenstaande voorbeelden hoort, is te vinden in het GitHub-project - dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.