המרה בין רשימה לסט בג'אווה
1. סקירה כללית
במאמר קצר זה, נסתכל על ההמרה בין א רשימה ו מַעֲרֶכֶת - החל מ- Java רגיל, באמצעות גויאבה וספריית אוספי Apache Commons, ולבסוף, עם Java 10.
מאמר זה הוא חלק מסדרת "Java - Back to Basic" כאן בבלדונג.
2. להמיר רשימה ל מַעֲרֶכֶת
2.1. עם Java רגיל
נתחיל בהמרה מ רשימה אל א מַעֲרֶכֶת באמצעות Java:
חלל ציבורי givenUsingCoreJava_whenListConvertedToSet_thenCorrect () {List sourceList = Arrays.asList (0, 1, 2, 3, 4, 5); הגדר targetSet = HashSet חדש (sourceList); }
כפי שאתה יכול לראות, תהליך ההמרה הוא בטיחותי וישר - מכיוון שבוני כל אוסף מקבלים אוסף אחר כמקור.
2.2. Wעם גויאבה
בואו נעשה את אותה המרה באמצעות גויאבה:
חלל ציבורי givenUsingGuava_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); הגדר targetSet = Sets.newHashSet (sourceList); }
2.3. עם אוספי Apache Commons
לאחר מכן, בואו נשתמש ב- API של Commons Collections כדי להמיר בין רשימה ו מַעֲרֶכֶת:
חלל ציבורי givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); הגדר targetSet = חדש HashSet (6); CollectionUtils.addAll (targetSet, sourceList); }
2.4. עם Java 10
אפשרות אחת נוספת היא להשתמש ב- Set.copyOf שיטת מפעל סטטית שהוצגה ב- Java 10:
חלל ציבורי givenUsingJava10_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); הגדר targetSet = Set.copyOf (sourceList); }
שים לב, כי א מַעֲרֶכֶת נוצר כך אינו ניתן לשינוי.
3. להמיר מַעֲרֶכֶת ל רשימה
3.1. עם Java רגיל
בואו נעשה את ההמרה ההפוכה - מ מַעֲרֶכֶת אל א רשימה - באמצעות Java:
חלל ציבורי givenUsingCoreJava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); רשימת targetList = ArrayList חדש (sourceSet); }
3.2. עם גויאבה
ופתרון הגויאבה:
חלל ציבורי givenUsingGuava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); רשימת targetList = Lists.newArrayList (sourceSet); }
דומה מאוד לגישת Java, רק עם קוד קצת פחות משוכפל.
3.3. עם אוספי Apache Commons
בואו נראה כעת את פתרון אוספי Commons להמרה בין a מַעֲרֶכֶת ו רשימה:
חלל ציבורי givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); רשימת targetList = ArrayList חדש (6); CollectionUtils.addAll (targetList, sourceSet); }
3.4. עם Java 10
לבסוף, אנו יכולים להשתמש ב- List.copyOf שהוצג ב- Java 10:
חלל ציבורי givenUsingJava10_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); רשימה targetList = List.copyOf (sourceSet); }
עלינו לזכור שכתוצאה מכך רשימה אינו ניתן לשינוי.
4. מסקנה
יישום כל הדוגמאות וקטעי הקוד ניתן למצוא באתר GitHub - זהו פרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.