Uklanjanje svih nula s popisa na Javi

Ovaj će brzi vodič pokazati kako to učiniti ukloniti sve null elementi iz a Popis, koristeći običnu Java, Guava, Apache Commons Collections i noviju podršku za Java 8 lambda.

Ovaj je članak dio „Java - Povratak na Basic”Serija ovdje na Baeldungu.

1. Uklonite nule iz a Popis Korištenje obične Jave

Okvir Java Collections nudi jednostavno rješenje za uklanjanje svih null elemenata u Popis - osnovno dok petlja:

@Test javna praznina givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect () {Lista popisa = Lists.newArrayList (null, 1, null); while (list.remove (null)); assertThat (popis, hasSize (1)); }

Alternativno, možemo se poslužiti i sljedećim jednostavnim pristupom:

@Test javna praznina givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect () {Lista popisa = Lists.newArrayList (null, 1, null); list.removeAll (Collections.singleton (null)); assertThat (popis, hasSize (1)); }

Imajte na umu da će oba ova rješenja izmijeniti popis izvora.

2. Uklonite nule iz a Popis Korištenje Google Guave

Možemo i mi ukloniti nule pomoću Guave i funkcionalniji pristup, putem predikata:

@Test javna praznina givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect () {Popis popisa = Lists.newArrayList (null, 1, null); Iterables.removeIf (popis, Predikati.isNull ()); assertThat (popis, hasSize (1)); }

Alternativno, ako ne želimo izmijeniti popis izvora, Guava će nam omogućiti stvaranje novog, filtrirajućeg popisa:

@Test javna praznina givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect () {Popis popisa = Lists.newArrayList (null, 1, null, 2, 3); Popis listWithoutNulls = Lists.newArrayList (Iterables.filter (popis, Predikati.notNull ())); assertThat (listWithoutNulls, hasSize (3)); }

3. Uklonite nule iz a Popis Korištenje zbirki Apache Commons

Pogledajmo sada jednostavno rješenje pomoću biblioteke Apache Commons Collections koristeći sličan funkcionalni stil:

@Test javna praznina givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect () {Lista popisa = Lists.newArrayList (null, 1, 2, null, 3, null); CollectionUtils.filter (popis, PredicateUtils.notNullPredicate ()); assertThat (popis, hasSize (3)); }

Imajte na umu da će i ovo rješenje izmijeniti izvorni popis.

4. Uklonite nule iz a Popis Korištenje Lambdas (Java 8)

Napokon - pogledajmo rješenje Java 8 pomoću Lambdas za filtriranje popisa; postupak filtriranja može se provesti paralelno ili serijski:

@Test javna praznina givenListContainsNulls_whenFilteringParallel_thenCorrect () {Popis popisa = Lists.newArrayList (null, 1, 2, null, 3, null); Popis listWithoutNulls = list.parallelStream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } @Test javna praznina givenListContainsNulls_whenFilteringSerial_thenCorrect () {Popis popisa = Lists.newArrayList (null, 1, 2, null, 3, null); Popis listWithoutNulls = list.stream () .filter (Objects :: nonNull) .collect (Collectors.toList ()); } javna praznina givenListContainsNulls_whenRemovingNullsWithRemoveIf_thenCorrect () {List listWithoutNulls = Lists.newArrayList (null, 1, 2, null, 3, null); listWithoutNulls.removeIf (Objects :: isNull); assertThat (listWithoutNulls, hasSize (3)); }

I to je to - nekoliko brzih i vrlo korisnih rješenja za uklanjanje svih nultih elemenata s popisa.

5. Zaključak

U ovom smo članku mogli istražiti različite pristupe kojima bismo mogli ukloniti nule iz a Popis koristeći Java, Guava ili Lambdas.

Provedba svih ovih primjera i isječaka može se naći u projektu GitHub. Ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti.


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