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

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

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

1. הסר אפסים מ- a רשימה שימוש ב- Java רגיל

מסגרת אוספי Java מציעה פיתרון פשוט עבור הסרת כל האלמנטים null רשימה - בסיסי בזמן לוּלָאָה:

@Test הציבור בטל givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect () {List list = Lists.newArrayList (null, 1, null); while (list.remove (null)); assertThat (רשימה, hasSize (1)); }

לחלופין, אנו יכולים גם להשתמש בגישה הפשוטה הבאה:

@Test הציבור בטל givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect () {List list = Lists.newArrayList (null, 1, null); list.removeAll (Collections.singleton (null)); assertThat (רשימה, hasSize (1)); }

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

2. הסר אפסים מ רשימה שימוש בגוגל גויאבה

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

@Test הציבור בטל givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect () {List list = Lists.newArrayList (null, 1, null); Iterables.removeIf (רשימה, Predicates.isNull ()); assertThat (רשימה, hasSize (1)); }

לחלופין, אם איננו רוצים לשנות את רשימת המקורות, גויאבה תאפשר לנו ליצור רשימת סינונים חדשה:

@Test הציבור בטל givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect () {List list = Lists.newArrayList (null, 1, null, 2, 3); List listWithoutNulls = Lists.newArrayList (Iterables.filter (list, Predicates.notNull ())); assertThat (listWithoutNulls, hasSize (3)); }

3. הסר אפסים מ- a רשימה שימוש באוספי Apache Commons

בואו נסתכל על פתרון פשוט באמצעות ספריית אוספי Apache Commons תוך שימוש בסגנון פונקציונלי דומה:

@Test הציבור בטל givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); CollectionUtils.filter (רשימה, PredicateUtils.notNullPredicate ()); assertThat (רשימה, hasSize (3)); }

שים לב שפתרון זה יהיה גם כן לשנות את הרשימה המקורית.

4. הסר אפסים מ- a רשימה שימוש במבדות (Java 8)

לסיום - בואו נסתכל פתרון Java 8 באמצעות Lambdas לסינון הרשימה; ניתן לבצע את תהליך הסינון במקביל או סדרתי:

@Test ציבור בטל givenListContainsNulls_whenFilteringParallel_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @Test ציבורי בטל givenListContainsNulls_whenFilteringSerial_thenCorrect () {List list = Lists.newArrayList (null, 1, 2, null, 3, null); List listWithoutNulls = list.stream () .filter (אובייקטים :: nonNull) .collect (Collectors.toList ()); } חלל ציבורי givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect () {List listWithoutNulls = Lists.newArrayList (null, 1, 2, null, 3, null); listWithoutNulls.removeIf (אובייקטים :: isNull); assertThat (listWithoutNulls, hasSize (3)); }

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

5. מסקנה

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

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


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