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. Tafel zou ook een perfecte manier zijn om het bord van Battleships te vertegenwoordigen.

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 vertegenwoordiging met behulp van de columnMap methode:

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