前言
有一个场景,list集合需要根据name,code去重,还在用传统for循环吗?
试一下stream加set
一、使用步骤
1.定义list(模拟库里查出数据)
List<User> userList = new ArrayList<>();
User user1 = new User();
User user2 = new User();
User user3 = new User();
User user4 = new User();
user1.setName("小米");
user1.setAge(12);
user2.setName("小米");
user2.setAge(12);
user3.setName("苹果");
user3.setAge(15);
user4.setName("苹果");
user4.setAge(18);
userList.add(user1);
userList.add(user2);
userList.add(user3);
userList.add(user4);
user实体
package test;
import lombok.Data;
/**
* @program: ruoyi
* @description:
* @author: yangyang
* @create: 2023-08-22 14:00
**/
@Data
public class User {
private Integer age;
private String name;
private Integer sex;
}
2.去重(set不可重复Key特性)
代码如下(示例):
List<User> after = userList
.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator
.comparing(User::getName)
.thenComparing(User::getAge))),
ArrayList::new));
System.err.println(after);