可以使用Java 8的stream和distinct方法来根据List中的某个属性去重。

假设User类有一个属性name,可以按照name属性去重,示例代码如下:

import java.util.ArrayList;
import java.util.List;

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

        List<User> distinctUserList = userList.stream()
                .distinct()
                .toList();

        System.out.println(distinctUserList);
    }

    static class User {
        private String name;

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

        public String getName() {
            return name;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj) return true;
            if (obj == null || getClass() != obj.getClass()) return false;
            User user = (User) obj;
            return name.equals(user.name);
        }

        @Override
        public int hashCode() {
            return name.hashCode();
        }

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

输出结果为:

[User{name='Alice'}, User{name='Bob'}, User{name='Charlie'}]

在User类中,重写了equals和hashCode方法,以name属性作为判断两个对象是否相等的依据。然后使用stream的distinct方法去重,并使用toList方法将结果转换为List

java 8 listUser 根据Listcode 去重

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

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