Java 8 使用 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象

本文介绍使用 Java 8 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象的方法。您可以使用 filter 操作符来排除掉 codes 中已存在的 user。

首先,您需要将 codes 列表转换为一个 Set,以便更快地检查某个 user 是否存在于 codes 中。然后,您可以使用 Stream 的 filter 操作符来过滤掉 codes 中已存在的 user。

示例代码

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

class User { private String code; private String name;

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

public String getCode() {
    return code;
}

public String getName() {
    return name;
}

}

public class Main { public static void main(String[] args) { List<User> lists = new ArrayList<>(); lists.add(new User("code1", "name1")); lists.add(new User("code2", "name2")); lists.add(new User("code3", "name3"));

    List&lt;String&gt; codes = new ArrayList&lt;&gt;();
    codes.add("code1");
    codes.add("code2");

    Set&lt;String&gt; uniqueCodes = new HashSet&lt;&gt;(codes);

    List&lt;User&gt; filteredLists = lists.stream()
            .filter(user -&gt; !uniqueCodes.contains(user.getCode()))
            .toList();

    filteredLists.forEach(user -&gt; System.out.println("Code: " + user.getCode() + ", Name: " + user.getName()));
}

}

在上面的示例代码中,我们创建了一个 User 类,它具有 code 和 name 属性。然后,我们创建了一个 lists 列表和一个 codes 列表,用于存储 User 对象和代码字符串。我们将 codes 列表转换为一个 Set,并使用 Stream 的 filter 操作符来过滤掉 lists 中已存在于 codes 中的 User 对象。最后,我们使用 forEach 操作符打印过滤后的 User 对象的 code 和 name 属性。

输出结果

Code: code3, Name: name3

通过上面的示例代码,您可以轻松地使用 Java 8 的 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象。

Java 8 使用 Stream API 从 List<User> 中排除 List<String> 中已存在的 User 对象

原文地址: https://www.cveoy.top/t/topic/qh3D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录