Java –从列表中删除所有空值
介紹:
在本文中,我們將學(xué)習(xí)如何使用普通的Java,Java 8 lambda表達(dá)式和某些第三方庫(kù)從Java 列表中刪除空值 。
所以,讓我們開(kāi)始吧!
從Java中的
讓我們探索從Java 列表中刪除null的不同方法:
1. Java 7或更低版??本:
使用Java 7或更低版??本時(shí),我們可以使用以下結(jié)構(gòu)從列表中刪除所有空值 :
Java
@Test public removeAllNullsFromListWithJava7OrLower() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));list.removeAll(Collections.singleton(null));assertThat(list, hasSize(2)); }請(qǐng)注意,我們?cè)诖颂巹?chuàng)建了一個(gè)可變列表。 嘗試從不可變列表中刪除null將拋出java.lang.UnsupportedOperationException 。
2. Java 8或更高版本:
從Java 8或更高版本的Java 列表中刪除空值的方法非常直觀且優(yōu)雅:
@Test public removeAllNullsFromListWithJava8() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));list.removeIf(Objects::isNull);assertThat(list, hasSize(2)); }我們可以簡(jiǎn)單地使用removeIf()構(gòu)造來(lái)刪除所有空值。
如果我們不想更改現(xiàn)有列表,而是返回帶有所有非空值的新列表,則可以使用:
Java
@Test public removeAllNullsFromListWithJava8() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());assertThat(list, hasSize(4));assertThat(newList, hasSize(2)); }我們可以在此處了解有關(guān)Java 8流收集器的更多信息。
3. Apache Commons:
Apache Commons CollectionUtils類提供了一個(gè)filter(Iterable,Predicate)方法,該方法也可以解決我們的目的。 傳入的謂詞將應(yīng)用于列表中的所有元素:
Java
@Test public removeAllNullsFromListWithApacheCommons() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));CollectionUtils.filter(list, PredicateUtils.notNullPredicate());assertThat(list, hasSize(2)); }從而,從現(xiàn)有列表中過(guò)濾掉所有空值 。
4. Google Guava:
Guava中的Iterables類提供了removeIf(Iterable,Predicate)方法,以幫助我們根據(jù)給定的謂詞過(guò)濾值。 讓我們看看如何利用它來(lái)發(fā)揮優(yōu)勢(shì):
Java
@Test public removeAllNullsFromListUsingGuava() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));Iterables.removeIf(list, Predicates.isNull());assertThat(list, hasSize(2)); }另外,如果我們不想修改現(xiàn)有列表,Guava允許我們創(chuàng)建一個(gè)新的過(guò)濾列表:
Java
@Test public removeAllNullsFromListUsingGuava() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = new ArrayList<>(Iterables.filter(list, Predicates.notNull()));assertThat(list, hasSize(4));assertThat(newList, hasSize(2)); }Java
@Test public removeAllNullsFromList() {List<String> list =new ArrayList<>(Arrays.asList("A", null, "B", null));List<String> newList = new ArrayList<>(Iterables.filter(list, Predicates.notNull()));assertThat(list, hasSize(4));assertThat(newList, hasSize(2)); }結(jié)論:
在本快速教程中,我們探索了多種方法可以從Java 列表中刪除所有空值 。
成為第一個(gè)發(fā)表評(píng)論的人。
翻譯自: https://www.javacodegeeks.com/2019/03/java-remove-nulls-from-list.html
總結(jié)
以上是生活随笔為你收集整理的Java –从列表中删除所有空值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全球电脑制造商(全球电脑制造商有哪些)
- 下一篇: java8 快排_Java 8快多少?