הסרת כל הכפילויות מרשימה ב- Java

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

מאמר זה הוא חלק מה- "ג'אווה - חזרה לבסיסיסדרה כאן על באלדונג.

1. הסר כפילויות מרשימה באמצעות Java רגיל

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

חלל ציבורי givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect () {List listWithDuplicates = Lists.newArrayList (0, 1, 2, 3, 0, 0); List listWithoutDuplicates = ArrayList חדש (HashSet חדש (listWithDuplicates)); assertThat (listWithoutDuplicates, hasSize (4)); }

כפי שאתה יכול לראות, הרשימה המקורית נותרה ללא שינוי.

2. הסר כפילויות מרשימה באמצעות גויאבה

ניתן לעשות זאת גם באמצעות גויאבה:

חלל ציבורי givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect () {List listWithDuplicates = Lists.newArrayList (0, 1, 2, 3, 0, 0); List listWithoutDuplicates = Lists.newArrayList (Sets.newHashSet (listWithDuplicates)); assertThat (listWithoutDuplicates, hasSize (4)); }

ושוב, הרשימה המקורית נותרה ללא שינוי.

3. הסר כפילויות מרשימה באמצעות Java 8 Lambdas

לסיום - בואו נסתכל על פתרון חדש, באמצעות Lambdas בג'אווה 8; אנחנו הולכים ל להשתמש ב מוּבהָק() שיטת ממשק ה- API של Stream שמחזיר זרם המורכב מאלמנטים מובחנים על בסיס התוצאה שהוחזרה על ידי שווים() שיטה:

חלל ציבורי givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect () {List listWithDuplicates = Lists.newArrayList (1, 1, 2, 2, 3, 3); List listWithoutDuplicates = listWithDuplicates.stream () .distinct () .collect (Collectors.toList ()); }

ויש לנו את זה - 3 דרכים מהירות לנקות את כל הפריטים הכפולים מתוך רשימה.

4. מסקנה

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

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