כיצד לבדוק אם מפתח קיים במפה

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

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

באופן ספציפי, נתמקד containKey ו לקבל.

2. containKey

אם נסתכל על JavaDoc עבור מפה # מכילה מפתח:

מחזירה אמת אם מפה זו מכילה מיפוי למפתח שצוין

אנו יכולים לראות ששיטה זו היא מועמדת די טובה לעשות את מה שאנחנו רוצים.

בואו ניצור מפה פשוטה מאוד ונאמת באמצעותה את תוכנה containKey:

@ מבחן ציבורי בטל כאשר KeyEsPresent_thenContainsKeyReturnsTrue () {Map map = Collections.singletonMap ("מפתח", "ערך"); assertTrue (map.containsKey ("מפתח")); assertFalse (map.containsKey ("חסר")); }

פשוט שים, containKey אומר לנו אם המפה מכילה את המפתח הזה.

3. לקבל

עַכשָׁיו, לקבל לפעמים יכול לעבוד גם, אבל זה מגיע עם כמה מזוודות, תלוי אם מַפָּה יישום תומך בערכי אפס.

שוב, מסתכל ב מַפָּהJavaDoc, הפעם ל- מפה # לשים, אנו רואים שזה רק יזרוק א NullPointerException:

אם המפתח או הערך שצוינו הם null ומפה זו אינה מתירה מקשי אפס או ערכים

מאז כמה יישומים של מַפָּה יכולות להיות ערכי null (כמו מפת גיבוב), זה אפשרי עבור לקבל לחזור ריק למרות שהמפתח קיים.

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

@ מבחן ציבורי בטל כאשר KeyHasNullValue_thenGetStillWorks () {Map map = Collections.singletonMap ("כלום", null); assertTrue (map.containsKey ("כלום")); assertNull (map.get ("כלום")); }

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

4. מסקנה

במאמר זה הסתכלנו containKey. בדקנו מקרוב למה זה מסוכן לשימוש לקבל לאימות קיומו של מפתח.

כמו תמיד, בדוק את דוגמאות הקוד ב- Github.


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