Leitfaden zur Guaventabelle

1. Übersicht

In diesem Tutorial zeigen wir Ihnen, wie Sie die Tabellenoberfläche von Google Guava und ihre verschiedenen Implementierungen verwenden.

Guavas Tabelle ist eine Sammlung, die eine tabellenähnliche Struktur darstellt, die Zeilen, Spalten und die zugehörigen Zellenwerte enthält. Die Zeile und die Spalte fungieren als geordnetes Schlüsselpaar.

2. Google Guavas Tabelle

Schauen wir uns an, wie die Table- Klasse verwendet wird.

2.1. Maven-Abhängigkeit

Beginnen wir mit dem Hinzufügen der Abhängigkeit der Guava-Bibliothek von Google in der Datei pom.xml :

 com.google.guava guava 29.0-jre 

Die neueste Version der Abhängigkeit kann hier überprüft werden.

2.2. Über

Wenn wir Guavas Tabelle unter Verwendung von Sammlungen darstellen würden, die in Kern-Java vorhanden sind, wäre die Struktur eine Karte von Zeilen, wobei jede Zeile eine Karte von Spalten mit zugehörigen Zellenwerten enthält.

Die Tabelle stellt eine spezielle Zuordnung dar, in der zwei Schlüssel kombiniert angegeben werden können, um auf einen einzelnen Wert zu verweisen.

Es ähnelt dem Erstellen einer Karte mit Karten, z. B. Karte . Tisch wäre auch eine perfekte Art, das Schlachtschiff-Spielbrett darzustellen.

3. Erstellen

Sie können eine Tabelleninstanz auf verschiedene Arten erstellen :

  • Verwenden der create- Methode aus der Klasse HashBasedTable, die LinkedHashMap intern verwendet:
    Table universityCourseSeatTable = HashBasedTable.create();
  • Wenn wir eine Tabelle benötigen, deren Zeilen- und Spaltenschlüssel nach ihrer natürlichen Reihenfolge oder durch Bereitstellung von Komparatoren sortiert werden müssen, können Sie eine Instanz einer Tabelle mithilfe der create- Methode aus einer Klasse namens TreeBasedTable erstellen , die TreeMap intern verwendet:
    Table universityCourseSeatTable = TreeBasedTable.create(); 
  • Wenn wir die Zeilen- und Spaltenschlüssel vorher kennen und die Tabellengröße festgelegt ist, verwenden Sie die Methode create aus der Klasse ArrayTable :
    List universityRowTable = Lists.newArrayList("Mumbai", "Harvard"); List courseColumnTables = Lists.newArrayList("Chemical", "IT", "Electrical"); Table universityCourseSeatTable = ArrayTable.create(universityRowTable, courseColumnTables); 
  • Wenn Sie beabsichtigen, eine unveränderliche Instanz von Table zu erstellen, deren interne Daten sich niemals ändern werden, verwenden Sie die ImmutableTable- Klasse (Erstellen nach einem Builder-Muster):
    Table universityCourseSeatTable = ImmutableTable. builder() .put("Mumbai", "Chemical", 120).build(); 

4. Verwenden von

Beginnen wir mit einem einfachen Beispiel, das die Verwendung von Table zeigt .

4.1. Abruf

Wenn wir den Zeilenschlüssel und den Spaltenschlüssel kennen, können wir den Wert erhalten, der der Zeile und dem Spaltenschlüssel zugeordnet ist:

@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(seatCount).isEqualTo(60); assertThat(seatCountForNoEntry).isEqualTo(null); }

4.2. Nach einem Eintrag suchen

Wir können das Vorhandensein eines Eintrags in einer Tabelle anhand folgender Kriterien überprüfen :

  • Zeilenschlüssel
  • Spaltenschlüssel
  • Sowohl Zeilen- als auch Spaltenschlüssel
  • Wert

Mal sehen, wie man das Vorhandensein eines Eintrags überprüft:

@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); 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. Entfernung

Wir können einen Eintrag aus der Tabelle entfernen, indem wir sowohl den Zeilenschlüssel als auch den Spaltenschlüssel angeben:

@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(seatCount).isEqualTo(60); assertThat(universityCourseSeatTable.remove("Mumbai", "IT")). isEqualTo(null); } 

4.4. Zeilenschlüssel zur Zellenwertzuordnung

Wir können eine Map- Darstellung mit dem Schlüssel als Zeile und dem Wert als CellValue erhalten, indem wir den Spaltenschlüssel angeben :

@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); Map universitySeatMap = universityCourseSeatTable.column("IT"); assertThat(universitySeatMap).hasSize(2); assertThat(universitySeatMap.get("Mumbai")).isEqualTo(60); assertThat(universitySeatMap.get("Harvard")).isEqualTo(120); } 

4.5. Kartendarstellung einer Tabelle

We can get a Map representation by using the columnMap method:

@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); Map
    
      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. Column Key to Cell Value Map

We can get a Map representation with the key as a column and the value as a CellValue by providing row key:

@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); Map courseSeatMap = 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

We can get all the row keys from a table using the rowKeySet method:

@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

We can get all column keys from a table using the columnKeySet method:

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

In this tutorial, we illustrated the methods of the Table class from the Guava library. The Table class provides a collection that represents a table like structure containing rows, columns and associated cell values.

Der zu den obigen Beispielen gehörende Code befindet sich im GitHub-Projekt - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.