מדריך לשולחן גויאבה

1. סקירה כללית

במדריך זה נראה כיצד להשתמש ב- Google Guava שולחן ממשק והיישומים המרובים שלו.

של גויאבה שולחן הוא אוסף המייצג טבלה כמו מבנה המכיל שורות, עמודות וערכי התא המשויכים. השורה והעמודה משמשות כצמד מקשים מסודר.

2. Google גויאבה שולחן

בואו נסתכל כיצד להשתמש ב- שולחן מעמד.

2.1. תלות של Maven

נתחיל בהוספת תלות בספריית גויאבה של גוגל ב pom.xml:

 com.google.guava גויאבה 29.0-jre 

ניתן לבדוק כאן את הגרסה האחרונה של התלות.

2.2. על אודות

אם היינו מייצגים את זה של גויאבה שולחן באמצעות אוספים בהווה ב- Java הליבה, אז המבנה יהיה מפה של שורות שבהן כל שורה מכילה מפה של עמודות עם ערכי תא קשורים.

שולחן מייצג מפה מיוחדת בה ניתן לציין שני מקשים בצורה משולבת להתייחס לערך יחיד.

זה דומה ליצירת מפת מפות, למשל, מַפָּה. שולחן תהיה גם דרך מושלמת לייצג את לוח המשחק של ספינות הקרב.

3. יצירה

אתה יכול ליצור מופע של שולחן בדרכים מרובות:

  • משתמש ב לִיצוֹר שיטה מהכיתה HashBasedTable אשר משתמש LinkedHashMap כְּלַפֵּי פְּנִים:
    שולחן אוניברסיטאיCourseSeatTable = HashBasedTable.create ();
  • אם אנחנו צריכים א שולחן שמקשי השורה שלהם ומפתחות העמודות צריכים להיות מסודרים לפי הסדר הטבעי שלהם או על ידי אספקת משווים, אתה יכול ליצור מופע של שולחן משתמש ב לִיצוֹר שיטה משיעור שנקרא TreeBasedTable, שמשתמש TreeMap כְּלַפֵּי פְּנִים:
    שולחן universityCourseSeatTable = TreeBasedTable.create (); 
  • אם ידוע לנו מראש על מקשי השורות ומפתחות העמודות וגודל הטבלה קבוע, השתמש ב לִיצוֹר שיטה מהכיתה ArrayTable:
    רשימת universityRowTable = Lists.newArrayList ("מומבאי", "הרווארד"); רשימת קורסColumnTables = Lists.newArrayList ("כימי", "IT", "חשמל"); שולחן universityCourseSeatTable = ArrayTable.create (universityRowTable, courseColumnTables); 
  • אם אנו מתכוונים ליצור מופע בלתי-משתנה של שולחן שהנתונים הפנימיים שלהם לעולם לא ישתנו, השתמש ב ImmutableTable מחלקה (היוצרת לפי דפוס בנאי):
    שולחן אוניברסיטאיCourseSeatTable = ImmutableTable. builder () .put ("מומבאי", "כימי", 120) .build (); 

4. שימוש

נתחיל בדוגמה פשוטה המציגה את השימוש ב- שולחן.

4.1. שְׁלִיפָה

אם אנו מכירים את מפתח השורה ואת מפתח העמודה, נוכל לקבל את הערך המשויך לשורה ולמפתח העמודה:

@Test public void givenTable_whenGet_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); int seatCount = universityCourseSeatTable.get ("מומבאי", "IT"); מספר שלם seatCountForNoEntry = universityCourseSeatTable.get ("אוקספורד", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (seatCountForNoEntry) .isEqualTo (null); }

4.2. בודק כניסה

אנחנו יכולים לבדוק נוכחות של ערך ב- שולחן מבוסס על:

  • מקש שורה
  • מקש עמודות
  • גם מפתח שורה וגם מפתח עמודות
  • ערך

בואו נראה כיצד לבדוק אם קיימת ערך:

@Test הציבור בטל givenTable_whenContains_returns בהצלחה () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); entryIsPresent = בוליאני = universityCourseSeatTable.contains ("מומבאי", "IT"); קורס בוליאניIsPresent = universityCourseSeatTable.containsColumn ("IT"); אוניברסיטה בוליאניתIsPresent = universityCourseSeatTable.containsRow ("מומבאי"); seatCountIsPresent בוליאני = universityCourseSeatTable.containsValue (60); assertThat (entryIsPresent) .isEqualTo (true); assertThat (courseIsPresent) .isEqualTo (נכון); assertThat (universityIsPresent) .isEqualTo (נכון); assertThat (seatCountIsPresent) .isEqualTo (נכון); }

4.3. הֲסָרָה

אנו יכולים להסיר ערך מה- שולחן על ידי אספקת מפתח השורה ומפתח העמודה:

@Test public void givenTable_whenRemove_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); int seatCount = universityCourseSeatTable.remove ("מומבאי", "IT"); assertThat (seatCount) .isEqualTo (60); assertThat (universityCourseSeatTable.remove ("מומבאי", "IT")). isEqualTo (null); } 

4.4. מפתח שורה למפת ערך תא

אנחנו יכולים להשיג מַפָּה ייצוג עם המפתח כשורה והערך כ- CellValue על ידי מתן מפתח העמודה:

@Test public void givenTable_whenColumn_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); מפה universitySeatMap = universityCourseSeatTable.column ("IT"); assertThat (universitySeatMap) .hasSize (2); assertThat (universitySeatMap.get ("מומבאי")). הוא EqualTo (60); assertThat (universitySeatMap.get ("הרווארד")). הוא EqualTo (120); } 

4.5. ייצוג מפה של שולחן

אנחנו יכולים להשיג מַפָּה ייצוג באמצעות columnMap שיטה:

@Test הציבור בטל givenTable_whenColumnMap_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); מַפָּה courseKeyUniversitySeatMap = universityCourseSeatTable.columnMap (); assertThat (courseKeyUniversitySeatMap) .hasSize (3); assertThat (courseKeyUniversitySeatMap.get ("IT")). hasSize (2); assertThat (courseKeyUniversitySeatMap.get ("חשמל")). hasSize (1); assertThat (courseKeyUniversitySeatMap.get ("כימי")). hasSize (1); } 

4.6. מפתח עמוד למפת ערך התא

אנחנו יכולים להשיג מַפָּה ייצוג עם המפתח כעמודה והערך כ- CellValue על ידי מתן מפתח שורה:

@ מבט בטל פומבי givenTable_whenRow_returns בהצלחה () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); מפה courseSeatMap = universityCourseSeatTable.row ("מומבאי"); assertThat (courseSeatMap) .hasSize (2); assertThat (courseSeatMap.get ("IT")). isEqualTo (60); assertThat (courseSeatMap.get ("כימי")). הוא EqualTo (120); } 

4.7. קבל מפתח שורה מובחן

אנו יכולים להשיג את כל מקשי השורה מטבלה באמצעות ה- rowKeySet שיטה:

@Test ציבור בטל givenTable_whenRowKeySet_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); הגדר universitySet = universityCourseSeatTable.rowKeySet (); assertThat (universitySet) .hasSize (2); } 

4.8. קבל מפתח עמוד מובחן

אנו יכולים להשיג את כל מקשי העמודות מטבלה באמצעות ה- columnKeySet שיטה:

@Test הציבור בטל givenTable_whenColKeySet_returnsSuccessfully () {טבלה universityCourseSeatTable = HashBasedTable.create (); universityCourseSeatTable.put ("מומבאי", "כימי", 120); universityCourseSeatTable.put ("מומבאי", "IT", 60); universityCourseSeatTable.put ("הרווארד", "חשמל", 60); universityCourseSeatTable.put ("הרווארד", "IT", 120); הגדר courseSet = universityCourseSeatTable.columnKeySet (); assertThat (courseSet) .hasSize (3); } 

5. מסקנה

במדריך זה הדגמנו את שיטות ה- שולחן כיתה מספריית גויאבה. ה שולחן class מספק אוסף המייצג טבלה כמו מבנה המכיל שורות, עמודות וערכי תא משויכים.

את הקוד השייך לדוגמאות לעיל ניתן למצוא בפרויקט GitHub - זהו פרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כמות שהוא.


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