גויאבה - מפות

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

במדריך זה נמחיש את הדרכים השימושיות ביותר שתוכלו לעשות למנף את גויאבה לעבודה עם ג'אווה מפות.

נתחיל פשוט מאוד ליצור מפת גיבובבלי ה חָדָשׁ מפעיל, באמצעות גויאבה:

מפה aNewMap = Maps.newHashMap ();

2. ImmutableMap

הבא - בואו נראה איך ליצור ImmutableMap באמצעות גויאבה:

@ מבחן ציבורי בטל whenCreatingImmutableMap_thenCorrect () {משכורת מפה = ImmutableMap. builder () .put ("John", 1000) .put ("Jane", 1500) .put ("אדם", 2000) .put ("טום", 2000) .build (); assertEquals (1000, salary.get ("John"). intValue ()); assertEquals (2000, salary.get ("טום"). intValue ()); }

3. SortedMap

עכשיו - בואו נסתכל על יצירת ועבודה עם a SortedMap.

בדוגמה הבאה - אנו יוצרים מפה ממוינת באמצעות בונה הגויאבה המתאים:

@ מבחן פומבי בטל כאשר UsSingedMap_thenKeysAreSorted () {ImmutableSortedMap משכורת = חדש ImmutableSortedMap. Builder (Ordering.natural ()) .put ("John", 1000) .put ("Jane", 1500) .put ("Adam", 2000). put ("טום", 2000) .build (); assertEquals ("אדם", משכורת.פירסטקיי ()); assertEquals (2000, salary.lastEntry (). getValue (). intValue ()); }

4. BiMap

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

בדוגמה הבאה - אנו יוצרים a BiMap וכי אנחנו מקבלים את זה הפוך():

@ מבחן ציבורי בטל כאשרCreateBiMap_thenCreated () {מילות BiMap = HashBiMap.create (); words.put ("ראשית", 1); words.put ("שני", 2); words.put ("שלישי", 3); assertEquals (2, words.get ("Second"). intValue ()); assertEquals ("שלישי", מילים.הפוך (). קבל (3)); }

5. מולטימפה

עכשיו - בואו נסתכל על מולטימפה.

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

@ מבחן ציבורי בטל כאשרCreateMultimap_thenCreated () {Multimap multimap = ArrayListMultimap.create (); multimap.put ("פרי", "תפוח"); multimap.put ("פרי", "בננה"); multimap.put ("חיית מחמד", "חתול"); multimap.put ("חיית מחמד", "כלב"); assertThat (multimap.get ("פרי"), מכיל InAnyOrder ("תפוח", "בננה")); assertThat (multimap.get ("חיית מחמד"), containInAnyOrder ("חתול", "כלב")); }

5. שולחן

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

בדוגמה הבאה - נשתמש בטבלה לאחסון המרחקים בין ערים:

@Test הציבור בטל כאשרCreatingTable_thenCorrect () {מרחק טבלה = HashBasedTable.create (); distance.put ("לונדון", "פריז", 340); distance.put ("ניו יורק", "לוס אנג'לס", 3940); distance.put ("לונדון", "ניו יורק", 5576); assertEquals (3940, distance.get ("ניו יורק", "לוס אנג'לס"). intValue ()); assertThat (distance.columnKeySet (), containInAnyOrder ("פריז", "ניו יורק", "לוס אנג'לס")); assertThat (distance.rowKeySet (), containInAnyOrder ("לונדון", "ניו יורק")); }

אנחנו יכולים גם להשתמש Tables.transpose () להפוך את מקשי השורות והעמודות כמו בדוגמה הבאה:

@ מבחן ציבורי בטל כאשרTransposingTable_thenCorrect () {מרחק טבלה = HashBasedTable.create (); distance.put ("לונדון", "פריז", 340); distance.put ("ניו יורק", "לוס אנג'לס", 3940); distance.put ("לונדון", "ניו יורק", 5576); טבלה מועברת = Tables.transpos (מרחק); assertThat (transposed.rowKeySet (), containInAnyOrder ("פריז", "ניו יורק", "לוס אנג'לס")); assertThat (transposed.columnKeySet (), containInAnyOrder ("לונדון", "ניו יורק")); }

6. ClassToInstanceMap

הבא - בואו נסתכל על ClassToInstanceMap. אנחנו יכולים להשתמש ClassToInstanceMap אם אנו רוצים שהמחלקה של האובייקט תהיה המפתח כמו בדוגמה הבאה:

@Test הציבור בטל כאשרCreatingClassToInstanceMap_thenCorrect () {ClassToInstanceMap numbers = MutableClassToInstanceMap.create (); numbers.putInstance (Integer.class, 1); numbers.putInstance (Double.class, 1.5); assertEquals (1, numbers.get (Integer.class)); assertEquals (1.5, numbers.get (Double.class)); }

7. קבוצה רשימה באמצעות מולטימפה

הבא - בואו נראה איך לקבץ א רשימה באמצעות מולטימפה. בדוגמה הבאה - אנו מקבצים א רשימה שמות לפי אורכם באמצעות Multimaps.index ():

@ מבחן ציבורי בטל כאשר GroupingListsUsingMultimap_thenGrouped () {List names = Lists.newArrayList ("John", "Adam", "Tom"); פונקציה func = פונקציה חדשה () {שלם ציבורי החל (קלט מחרוזת) {return input.length (); }}; קבוצות מולטימפים = Multimaps.index (שמות, פונקציות); assertThat (group.get (3), containInAnyOrder ("טום")); assertThat (group.get (4), containInAnyOrder ("ג'ון", "אדם")); }

8. מסקנה

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

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


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