התבוסס על ערכי Enum ב- Java

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

Enum ב- Java הוא סוג נתונים המסייע לנו להקצות קבוצה קבועה מראש של קבועים למשתנה.

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

2. התעלפות מעל Enum ערכים

בואו נגדיר תחילה Enum, כדי שנוכל ליצור כמה דוגמאות פשוטות לקוד:

יום ציבורי DaysOfWeekEnum {יום ראשון, יום שני, יום שלישי, יום רביעי, יום חמישי, יום שישי, יום שבת} 

לאנומות אין שיטות איטרציה כמו לכל אחד() אוֹ איטרטור (). במקום זאת, אנו יכולים להשתמש במערך ה- Enum ערכים שהוחזרו על ידי ערכים () שיטה.

2.1. איטרציה באמצעות לולאה

ראשית, אנו יכולים פשוט להשתמש בבית הספר הישן ל לוּלָאָה:

עבור (יום DaysOfWeekEnum: DaysOfWeekEnum.values ​​()) {System.out.println (day); }

2.2. איטרציה באמצעות זרם

אנחנו יכולים גם להשתמש java.util.Stream. כדי שנוכל לבצע פעולות ב- Enum ערכים.

ליצור זרם יש לנו שתי אפשרויות, אחת באמצעות זרם של:

Stream.of (DaysOfWeekEnum.values ​​());

אחר, משתמש Arrays.stream:

Arrays.stream (DaysOfWeekEnum.values ​​());

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

Public enum DaysOfWeekEnum {SUNDAY ("off"), MONDAY ("working"), TUESDAY ("working"), WEDNESDAY ("working"), THURSDAY ("working"), FRIDAY ("working"), SATURDAY ("off "); פרטי מחרוזת סוגOfDay; DaysOfWeekEnum (מחרוזת typeOfDay) {this.typeOfDay = typeOfDay; } // סטרים וקובעים סטנדרטיים זרם זרם סטטי ציבורי () {Return Stream.Of (DaysOfWeekEnum.values ​​()); }}

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

class class EnumStreamExample {public static void main () {DaysOfWeekEnum.stream () .filter (d -> d.getTypeOfDay (). equals ("off")) .forEach (System.out :: println); }}

התפוקה שאנחנו מקבלים כשאנחנו מריצים את זה:

יום ראשון שבת

2.3. איטרציה באמצעות לכל אחד()

ה לכל אחד() השיטה נוספה ל ניתן לנידון ממשק בג'אווה 8. אז בכל כיתות אוסף java יש יישומים של לכל אחד() שיטה. על מנת להשתמש באלה עם Enum, ראשית עלינו להמיר את Enum לאוסף מתאים. אנחנו יכולים להשתמש Arrays.asList () לייצר רשימת מערך שאותם נוכל לגלול סביב באמצעות לכל אחד() שיטה:

Arrays.asList (DaysOfWeekEnum.values ​​()) .forEach (day -> System.out.println (day)); 

2.4. איטרציה באמצעות EnumSet

EnumSet הוא יישום קבוצה מיוחד שנוכל להשתמש בו Enum סוגים:

EnumSet.allOf (DaysOfWeekEnum.class) .forEach (day -> System.out.println (day));

2.5. שימוש ב- רשימת מערך שֶׁל Enum ערכים

אנו יכולים גם להוסיף ערכים של Enum אל א רשימה. זה מאפשר לנו לתפעל את רשימה כמו כל אחד אחר:

רשימת ימי = ArrayList חדש (); days.add (DaysOfWeekEnum.FRIDAY); days.add (DaysOfWeekEnum.SATURDAY); days.add (DaysOfWeekEnum.SUNDAY); עבור (יום DaysOfWeekEnum: ימים) {System.out.println (יום); } days.remove (DaysOfWeekEnum.SATURDAY); אם (! days.contains (DaysOfWeekEnum.SATURDAY)) {System.out.println ("יום שבת כבר לא ברשימה"); } עבור (יום DaysOfWeekEnum: ימים) {System.out.println (יום); } 

אנחנו יכולים גם ליצור רשימת מערך על ידי שימוש ב Arrays.asList ().

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

רשימת ימים = Arrays.asList (DaysOfWeekEnum.values ​​()); ימים. הסר (0); 

3. מסקנה

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

אחרת, אין הגבלה באיזו שיטה להשתמש.

כמו תמיד, ניתן למצוא את הקוד לכל הדוגמאות המוסברות כאן ב- GitHub.