自学内容网 自学内容网

合并两个可能为空的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 值并将列表合并到一个新的列表中。这种方法不仅代码简洁,还提高了可读性,非常适合在实际开发中使用。


原文地址:https://blog.csdn.net/run65536/article/details/139778417

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!