Vejledning til Guava-bordet

1. Oversigt

I denne vejledning viser vi, hvordan du bruger Google Guava Bord interface og dens flere implementeringer.

Guava Bord er en samling, der repræsenterer en tabellignende struktur, der indeholder rækker, kolonner og de tilknyttede celleværdier. Rækken og søjlen fungerer som et ordnet par nøgler.

2. Google Guava Bord

Lad os se på, hvordan du bruger Bord klasse.

2.1. Maven afhængighed

Lad os starte med at tilføje Googles Guava-biblioteksafhængighed i pom.xml:

 com.google.guava guava 29.0-jre 

Den seneste version af afhængigheden kan kontrolleres her.

2.2. Om

Hvis vi skulle repræsentere Guavas Bord ved brug af Samlinger til stede i Java-kernen, ville strukturen være et kort over rækker, hvor hver række indeholder et kort med kolonner med tilknyttede celleværdier.

Bord repræsenterer et specielt kort, hvor to nøgler kan specificeres kombineret for at henvise til en enkelt værdi.

Det ligner at oprette et kort over kort, f.eks. Kort. Bord ville også være en perfekt måde at repræsentere Battleships-spilbrættet på.

3. Oprettelse

Du kan oprette en forekomst af Bord på flere måder:

  • Bruger skab metode fra klassen HashBasedTable som bruger LinkedHashMap internt:
    Tabel universityCourseSeatTable = HashBasedTable.create ();
  • Hvis vi har brug for en Bord hvis række nøgler og kolonnetasterne skal bestilles efter deres naturlige rækkefølge eller ved at levere komparatorer, kan du oprette en forekomst af en Bord bruger skab metode fra en klasse kaldet TreeBasedTable, som bruger TreeMap internt:
    Tabel universityCourseSeatTable = TreeBasedTable.create (); 
  • Hvis vi kender rækketasterne og kolonnetasterne på forhånd, og bordstørrelsen er fast, skal du bruge skab metode fra klassen ArrayTable:
    Liste UniversityRowTable = Lists.newArrayList ("Mumbai", "Harvard"); Liste kursColumnTables = Lists.newArrayList ("Chemical", "IT", "Electrical"); Tabel universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables); 
  • Hvis vi agter at skabe en uforanderlig forekomst af Bord hvis interne data aldrig vil ændre sig, skal du bruge ImmutableTable klasse (opretter som følger et bygmønster):
    TabeluniversitetCourseSeatTable = ImmutableTable. builder () .put ("Mumbai", "Chemical", 120) .build (); 

4. Brug

Lad os starte med et simpelt eksempel, der viser brugen af Bord.

4.1. Hentning

Hvis vi kender række- og kolonnetasten, kan vi få den værdi, der er knyttet til rækken og kolonnetasten:

@Test offentlig ugyldighed givenTable_whenGet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 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. Kontrol af en post

Vi kan kontrollere tilstedeværelsen af ​​en post i en Bord baseret på:

  • Rækketast
  • Kolonnetast
  • Både rækketast og kolonnetast
  • Værdi

Lad os se, hvordan man kontrollerer for tilstedeværelsen af ​​en post:

@Test offentligt ugyldigt givenTable_whenContains_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); boolsk entryIsPresent = universityCourseSeatTable.contains ("Mumbai", "IT"); boolsk kursusIsPresent = universityCourseSeatTable.containsColumn ("IT"); boolesk universitetIsPresent = universityCourseSeatTable.containsRow ("Mumbai"); boolesk seatCountIsPresent = universityCourseSeatTable.containsValue (60); assertThat (entryIsPresent) .isEqualTo (true); assertThat (courseIsPresent) .isEqualTo (true); assertThat (universityIsPresent) .isEqualTo (true); assertThat (seatCountIsPresent) .isEqualTo (true); }

4.3. Fjernelse

Vi kan fjerne en post fra Bord ved at angive både række- og kolonnetasten:

@Test offentligt ugyldigt 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. Radnøgle til celleværdikort

Vi kan få en Kort repræsentation med nøglen som en række og værdien som en CellVærdi ved at angive kolonnetasten:

@Test offentlig ugyldighed givenTable_whenColumn_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kort UniversitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("Mumbai")). er EqualTo (60); assertThat (universitySeatMap.get ("Harvard")). er EqualTo (120); } 

4.5. Kortrepræsentation af en Bord

Vi kan få en Kort repræsentation ved hjælp af columnMap metode:

@Test offentligt ugyldigt givenTable_whenColumnMap_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kort courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("Elektrisk")). hasSize (1); assertThat (kursusKeyUniversitySeatMap.get ("kemisk")). har størrelse (1); } 

4.6. Kolonne nøgle til celleværdikort

Vi kan få en Kort repræsentation med nøglen som en kolonne og værdien som en CellVærdi ved at give række nøgle:

@Test offentlig ugyldighed givenTable_whenRow_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Kort CourseSeatMap = universityCourseSeatTable.row ("Mumbai"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). er EqualTo (60); assertThat (courseSeatMap.get ("Chemical")). er EqualTo (120); } 

4.7. Få Distinct Row Key

Vi kan få alle rækketasterne fra en tabel ved hjælp af rækkeKeySet metode:

@Test offentlig ugyldighed givenTable_whenRowKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Indstil universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); } 

4.8. Få tydelig søjlenøgle

Vi kan hente alle kolonnetaster fra en tabel ved hjælp af columnKeySet metode:

@Test offentlig ugyldighed givenTable_whenColKeySet_returnsSuccessfully () {Table universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Chemical", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Elektrisk", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Indstil courseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); } 

5. Konklusion

I denne vejledning illustrerede vi metoderne til Bord klasse fra Guava biblioteket. Det Bord klasse giver en samling, der repræsenterer en tabellignende struktur, der indeholder rækker, kolonner og tilknyttede celleværdier.

Koden, der hører til ovenstående eksempler, findes i GitHub-projektet - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.


$config[zx-auto] not found$config[zx-overlay] not found