Vodič za tablicu Guava

1. Pregled

U ovom uputstvu pokazat ćemo kako koristiti Google Guava Stol sučelje i njegove višestruke implementacije.

Guava Stol je zbirka koja predstavlja strukturu poput tablice koja sadrži retke, stupce i pridružene vrijednosti ćelija. Red i stupac djeluju kao uređeni par ključeva.

2. Google Guava Stol

Pogledajmo kako koristiti Stol razred.

2.1. Ovisnost Mavena

Počnimo s dodavanjem Googleove ovisnosti o knjižnici Guava u pom.xml:

 com.google.guava guava 29,0-jre 

Najnoviju verziju ovisnosti možete provjeriti ovdje.

2.2. Oko

Kad bismo zastupali Guavinu Stol koristeći Zbirke prisutna u jezgri Java, tada bi struktura bila karta redaka gdje svaki redak sadrži kartu stupaca s pridruženim vrijednostima ćelije.

Stol predstavlja posebnu mapu na kojoj se dva ključa mogu kombinirati kako bi se odnosila na jednu vrijednost.

Slično je stvaranju mape karata, na primjer, Karta. Stol također bi bio savršen način predstavljanja ploče igre Battleships.

3. Stvaranje

Možete stvoriti instancu Stol na više načina:

  • Koristiti stvoriti metoda iz razreda HashBasedTable koja koristi LinkedHashMap interno:
    Tablica universityCourseSeatTable = HashBasedTable.create ();
  • Ako nam treba a Stol čiji ključevi retka i ključevi stupaca trebaju biti poredani njihovim prirodnim redoslijedom ili isporukom usporednika, možete stvoriti primjerak Stol koristiti stvoriti metoda iz klase tzv TreeBasedTable, koji koristi TreeMap interno:
    Tablica universityCourseSeatTable = TreeBasedTable.create (); 
  • Ako unaprijed znamo tipke retka i tipke stupaca i ako je veličina tablice fiksna, upotrijebite stvoriti metoda iz razreda ArrayTable:
    Popis universityRowTable = Lists.newArrayList ("Mumbai", "Harvard"); Popis courseColumnTables = Lists.newArrayList ("Chemical", "IT", "Electrical"); Tablica universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables); 
  • Ako namjeravamo stvoriti nepromjenjivu instancu Stol čiji se interni podaci nikada neće promijeniti, koristite NepromjenjivaTablica klasa (stvaranje koje slijedi obrazac graditelja):
    Tablica UniversityCourseSeatTable = Nepromjenjiva tablica. builder () .put ("Mumbai", "Chemical", 120) .build (); 

4. Korištenje

Počnimo s jednostavnim primjerom koji prikazuje upotrebu Stol.

4.1. Dohvaćanje

Ako znamo ključ retka i ključ stupca, možemo dobiti vrijednost povezanu s retkom i ključem stupca:

@Test javna praznina givenTable_whenGet_returnsSuccessfully () {Tablica universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 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. Provjera unosa

Možemo provjeriti prisutnost unosa u a Stol na temelju:

  • Ključ reda
  • Ključ stupca
  • I ključ retka i ključ stupca
  • Vrijednost

Pogledajmo kako provjeriti postoji li unos:

@Test javna praznina givenTable_whenContains_returnsSuccessfully () {Tablica universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 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. Uklanjanje

Možemo ukloniti unos iz Stol davanjem i ključa retka i ključa stupca:

@Test javna praznina givenTable_whenRemove_returnsSuccessfully () {Tablica UniversityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 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. Ključ reda za kartu vrijednosti ćelije

Možemo dobiti Karta prikaz s ključem kao redom i vrijednošću kao a Vrijednost ćelije davanjem ključa stupca:

@Test javna praznina givenTable_whenColumn_returnsSuccessfully () {Tablica UniversityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Karta universitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("Mumbai")). isEqualTo (60); assertThat (universitySeatMap.get ("Harvard")). isEqualTo (120); } 

4.5. Prikaz karte a Stol

Možemo dobiti Karta predstavljanje pomoću stupacKarta metoda:

@Test javna praznina givenTable_whenColumnMap_returnsSuccessfully () {Tablica universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Karta courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("Električni")). hasSize (1); assertThat (courseKeyUniversitySeatMap.get ("Chemical")). hasSize (1); } 

4.6. Ključ stupca za kartu vrijednosti ćelije

Možemo dobiti Karta prikaz s ključem kao stupcem i vrijednošću kao a Vrijednost ćelije davanjem ključa retka:

@Test javna praznina givenTable_whenRow_returnsSuccessfully () {Tablica universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Karta courseSeatMap = universityCourseSeatTable.row ("Mumbai"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). isEqualTo (60); assertThat (courseSeatMap.get ("Kemikalija")). isEqualTo (120); } 

4.7. Nabavite izraziti ključ reda

Sve tipke retka možemo dobiti iz tablice pomoću rowKeySet metoda:

@Test javna praznina givenTable_whenRowKeySet_returnsSuccessfully () {Tablica UniversityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Postavi universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); } 

4.8. Nabavite distinktivni ključ stupca

Sve ključeve stupaca možemo dobiti iz tablice pomoću columnKeySet metoda:

@Test javna praznina givenTable_whenColKeySet_returnsSuccessfully () {Tablica UniversityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("Mumbai", "Kemikalije", 120); universityCourseSeatTable.put ("Mumbai", "IT", 60); universityCourseSeatTable.put ("Harvard", "Electrical", 60); universityCourseSeatTable.put ("Harvard", "IT", 120); Postavi courseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); } 

5. Zaključak

U ovom uputstvu ilustrirali smo metode Stol razred iz knjižnice Guava. The Stol klasa pruža kolekciju koja predstavlja strukturu poput tablice koja sadrži retke, stupce i pridružene vrijednosti ćelija.

Kôd koji pripada gornjim primjerima može se naći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti takav kakav jest.


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