合并两个可能为空的List 的方法记录

在日常开发中,我们经常需要将两个列表(List)合并成一个新的列表。这个任务看似简单,但如果其中一个或两个列表可能为 null,处理起来就需要注意一些细节。本文将介绍一种使用 Java 8 Stream API 的简洁方法来完成这一任务。

User 类定义

首先,我们需要一个 User 类,用于存储用户的基本信息:

public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{name='" + name + "', age=" + age + "}";
    }

    // Getters and setters can be added here if needed
}

合并列表的方法

我们使用 Java 8 的 Stream API 来合并两个可能为空的列表。这种方法非常简洁且易读。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        List<User> list1 = new ArrayList<>();
        list1.add(new User("Alice", 30));
        list1.add(new User("Bob", 25));

        List<User> list2 = null;

        List<User> mergedList = Stream.of(list1, list2)
                                      .filter(list -> list != null)
                                      .flatMap(List::stream)
                                      .collect(Collectors.toList());

        System.out.println(mergedList);
    }
}

代码解析

  1. 创建两个列表: 我们首先创建了两个 List<User> 对象,list1 包含了一些用户数据,list2null

    List<User> list1 = new ArrayList<>();
    list1.add(new User("Alice", 30));
    list1.add(new User("Bob", 25));
    
    List<User> list2 = null;
    
  2. 使用 Stream.of() 创建一个包含两个列表的流: Stream.of(list1, list2) 将两个列表作为流的元素。

    Stream.of(list1, list2)
    
  3. 过滤 null 值: filter(list -> list != null) 过滤掉 null 的列表。

    .filter(list -> list != null)
    
  4. 平铺流: flatMap(List::stream) 将每个列表中的元素平铺到一个统一的流中。

    .flatMap(List::stream)
    
  5. 收集结果: collect(Collectors.toList()) 将流中的元素收集到一个新的 List<User> 中。

    .collect(Collectors.toList());
    

运行结果

上述代码运行后,将输出合并后的列表:

[User{name='Alice', age=30}, User{name='Bob', age=25}]

总结

使用 Java 8 的 Stream API 可以简洁且高效地合并两个可能为 null 的列表。通过 Stream.of()filter()flatMap(),我们可以轻松地处理 null 值并将列表合并到一个新的列表中。这种方法不仅代码简洁,还提高了可读性,非常适合在实际开发中使用。

相关推荐

  1. 合并可能List 方法记录

    2024-06-18 18:40:02       32 阅读
  2. 创建List方法

    2024-06-18 18:40:02       34 阅读
  3. js判断对象是否几种方法

    2024-06-18 18:40:02       40 阅读
  4. 【Unity】如何获得List各自补集

    2024-06-18 18:40:02       38 阅读
  5. git 如何合并分支中某些文件

    2024-06-18 18:40:02       38 阅读
  6. 合并有序单链表

    2024-06-18 18:40:02       26 阅读
  7. 面试题 25. 合并排序链表

    2024-06-18 18:40:02       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 18:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 18:40:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 18:40:02       82 阅读
  4. Python语言-面向对象

    2024-06-18 18:40:02       91 阅读

热门阅读

  1. 从入门到精通:Linux多线程

    2024-06-18 18:40:02       26 阅读
  2. IDM下载管理器的优势分析:为什么选择IDM?

    2024-06-18 18:40:02       26 阅读
  3. MySQL触发器基本结构

    2024-06-18 18:40:02       33 阅读
  4. Hello, World

    2024-06-18 18:40:02       29 阅读
  5. C语言TC中有⼏个画矩形函数?怎么使⽤?

    2024-06-18 18:40:02       32 阅读
  6. 闲鱼商品详情API:深入解析与应用指南

    2024-06-18 18:40:02       23 阅读
  7. Gradle相关概念

    2024-06-18 18:40:02       23 阅读
  8. Redis 键(key)

    2024-06-18 18:40:02       32 阅读
  9. .net core使用EPPlus设置Excel的页眉和页脚

    2024-06-18 18:40:02       25 阅读
  10. SqlServer添加索引

    2024-06-18 18:40:02       25 阅读