מדריך למפת הביוב של גויאבה

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

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

א BiMap (או "מפה דו כיוונית") הוא סוג מיוחד של מפה השומרת על תצוגה הפוכה של המפה תוך הקפדה על כך שלא קיימים ערכים כפולים ותמיד ניתן להשתמש בערך בבטחה להחזרת המפתח.

היישום הבסיסי של BiMap הוא HashBiMap כאשר באופן פנימי הוא עושה שימוש בשניים מַפָּהs, אחד למפתח למיפוי ערכים והשני למיפוי ערך למפתחות.

2. Google גויאבה BiMap

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

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

 com.google.guava גויאבה 21.0 

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

3. יצירת BiMap

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

  • אם אתה מתמודד עם אובייקט Java מותאם אישית, השתמש ב לִיצוֹר שיטה מהכיתה HashBiMap:
BiMap capitalCountryBiMap = HashBiMap.create ();
  • אם כבר יש לנו מפה קיימת, אתה יכול ליצור מופע של BiMap באמצעות גרסה עמוסה יותר של לִיצוֹר שיטה משיעור HashBiMap:
מפה capitalCountryBiMap = HashMap חדש (); // ... HashBiMap.create (capitalCountryBiMap); 
  • אם אתה מתמודד עם מפתח מסוג Enum, להשתמש ב לִיצוֹר שיטה מהכיתה EnumHashBiMap:
BiMap operationStringBiMap = EnumHashBiMap.create (MyEnum.class); 
  • אם בכוונתך ליצור מפה בלתי ניתנת לשינוי, השתמש ב- ImmutableBiMap מחלקה (העוקבת אחר תבנית בנאי):
BiMap capitalCountryBiMap = חדש ImmutableBiMap.Builder () .put ("ניו דלהי", "הודו") .build (); 

4. שימוש ב- BiMap

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

@Test הציבור בטל givenBiMap_whenQueryByValue_shouldReturnKey () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("ניו דלהי", "הודו"); capitalCountryBiMap.put ("וושינגטון הבירה", "ארה"ב"); capitalCountryBiMap.put ("מוסקבה", "רוסיה"); מחרוזת keyFromBiMap = capitalCountryBiMap.inverse (). Get ("רוסיה"); ערך מחרוזתFromBiMap = capitalCountryBiMap.get ("וושינגטון הבירה"); assertEquals ("מוסקבה", keyFromBiMap); assertEquals ("ארה"ב", valueFromBiMap); }

הערה: הפוך השיטה לעיל מחזירה את התצוגה ההפוכה של ה- BiMap, הממפה כל אחד מערכי ה- BiMap למפתחות המשויכים אליו.

BiMap זורק IllegalArgumentException כאשר אנו מנסים לאחסן ערך כפול פעמיים.

בואו נראה דוגמה לאותו דבר:

@Test (צפוי = IllegalArgumentException.class) חלל ציבורי givenBiMap_whenSameValueIsPresent_shouldThrowException () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("מומבאי", "הודו"); capitalCountryBiMap.put ("וושינגטון הבירה", "ארה"ב"); capitalCountryBiMap.put ("מוסקבה", "רוסיה"); capitalCountryBiMap.put ("ניו דלהי", "הודו"); } 

אם אנו רוצים לעקוף את הערך שכבר קיים בו BiMap, אנחנו יכולים לעשות שימוש ב- כוח לשים שיטה:

@ מבחן חלל ציבורי givenSameValueIsPresent_whenForcePut_completesSuccessfully () {BiMap capitalCountryBiMap = HashBiMap.create (); capitalCountryBiMap.put ("מומבאי", "הודו"); capitalCountryBiMap.put ("וושינגטון הבירה", "ארה"ב"); capitalCountryBiMap.put ("מוסקבה", "רוסיה"); capitalCountryBiMap.forcePut ("ניו דלהי", "הודו"); assertEquals ("ארה"ב", capitalCountryBiMap.get ("וושינגטון הבירה")); assertEquals ("וושינגטון הבירה", capitalCountryBiMap.inverse (). get ("ארה"ב")); }

5. מסקנה

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

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


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