要根据 userId 去重一个 List 对象集合,可以使用 Java 8 的 Stream API。

假设我们有一个 List 对象集合,其中 User 类有一个 userId 属性。要根据 userId 去重,可以按照以下步骤进行:

  1. 使用 stream() 方法将 List 转换为 Stream 对象。
  2. 使用 collect(Collectors.toMap()) 方法将每个 User 对象的 userId 作为 key,User 对象本身作为 value,创建一个 Map 对象。
  3. 使用 values() 方法获取 Map 中的所有 value,这将返回一个 Collection 对象。
  4. 使用 collect(Collectors.toList()) 将 Collection 转换为 List,这将返回一个去重后的 List 对象集合。

下面是一个示例代码:

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

public class Main {
    public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1, 'John'));
        userList.add(new User(2, 'Jane'));
        userList.add(new User(1, 'John')); // 重复的 userId
        
        List<User> distinctUserList = userList.stream()
                .collect(Collectors.toMap(User::getUserId, user -> user, (oldUser, newUser) -> newUser))
                .values()
                .stream()
                .collect(Collectors.toList());

        for (User user : distinctUserList) {
            System.out.println(user.getUserId() + ' ' + user.getName());
        }
    }
}

class User {
    private int userId;
    private String name;

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

    public int getUserId() {
        return userId;
    }

    public String getName() {
        return name;
    }
}

输出结果为:

1 John
2 Jane
Java 8 使用 Stream API 去重 List 对象集合 (根据 userId)

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

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