אתחול HashSet בזמן הבנייה

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

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

אם אתה מחפש במקום זאת לחקור את התכונות של HashSet, עיין במאמר ליבה זה כאן.

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

אם יש לך מזל שעברת כבר ל- JDK9 +, אתה יכול פשוט להשתמש בשיטות איסוף מפעל.

2. שיטות מובנות Java

נתחיל בבחינת שלושה מובנים מנגנונים זמינים מאז Java 5 או לפני כן.

2.1. באמצעות מופע אוסף אחר

אנחנו יכולים להעביר קיים מופע של אוסף אחר לאתחל את מַעֲרֶכֶת. בדוגמה שלהלן אנו משתמשים בשורה שנוצרה רשימה:

Set set = HashSet חדש (Arrays.asList ("a", "b", "c"));

2.2. שימוש בכיתה אנונימית

בגישה נוספת, אנו יכולים להשתמש בכיתה האנונימית כדי להוסיף אלמנט אליו HashSet.

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

אז תלוי באיזו תדירות אנו צריכים לבצע אתחול מַעֲרֶכֶת אנחנו יכולים נסה להימנע משימוש בגישה זו:

Set set = HashSet new () {{add ("a"); הוסף ("ב"); הוסף ("c"); }};

2.3. שימוש בשיטת השירות אוספים מאז Java 5

הג'אווה אוספים תוֹעֶלֶת class מספק את השיטה הנקראת קְלָף בּוֹדֵד ליצור מַעֲרֶכֶת עם אלמנט יחיד. ה מַעֲרֶכֶת מופע שנוצר באמצעות קְלָף בּוֹדֵד השיטה היא בלתי ניתן לשינוי כלומר, אנחנו לא יכולים להוסיף לזה עוד ערכים.

ישנם מצבים במיוחד בבדיקות יחידה בהן עלינו ליצור מַעֲרֶכֶת עם ערך יחיד:

Set set = Collections.singleton ("a");

3. הגדרת שיטת השירות המותאמת אישית

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

באמצעות Collections.addAll שמקבל את אובייקט האוסף ומערך ערכים הוא הכי טוב בין היתר בגלל התקורה הנמוכה של ערכי העתקה.

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

סופי סטטי ציבורי Set newHashSet (T ... objs) {Set set = new HashSet (); Collections.addAll (set, objs); סט החזרה; }

ניתן להשתמש בשיטת השירות בקוד שלנו להלן.

Set set = newHashSet ("a", "b", "c");

4. שימוש זרם מאז Java 8

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

Set set = Stream.of ("a", "b", "c") .collect (Collectors.toCollection (HashSet :: new));

5. שימוש בספריית אוספי צד שלישי

ישנן מספר ספריות אוספי צד שלישי, כולל אוספי Google Guava, Apache Commons ו- Eclipse, רק כדי שם כמה.

ספריות אלה מספקות שיטות שימוש נוחות לאתחול אוספים כמו Set. מאז גויאבה של גוגל הוא אחד הנפוצים ביותר כאן יש לנו דוגמה ממנו. לגויאבה יש שיטות נוחות לשינוי ובלתי משתנה מַעֲרֶכֶת חפצים:

Set set = Sets.newHashSet ("a", "b", "c");

באופן דומה, לגויאבה יש מחלקת כלי יצירה בלתי ניתן לשינוי מַעֲרֶכֶת מקרים, כפי שניתן לראות בדוגמה שלהלן.

Set set = ImmutableSet.of ("a", "b", "c");

6. מסקנה

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

גישה אחת כזו שלא נכללה כאן יכולה להיות שימוש בבונה האובייקטים לבניית a מַעֲרֶכֶת.

כמו תמיד דוגמת קוד עבודה זמינה ב- GitHub.


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