在使用stream处理集合的时候,有些场景需要使用指定的字段去重,去重的方法有很多,今天介绍一种,通过TreeSet去重
一、测试类
@Data
@Accessors(chain = true)
public class TestBean {
private Integer id;
private String name;
}
二、TreeSet去重
List<TestBean> list = new ArrayList<>();
list.add(new TestBean().setId(1).setName("A"));
list.add(new TestBean().setId(2).setName("B"));
list.add(new TestBean().setId(3).setName("C"));
list.add(new TestBean().setId(1).setName("D"));
list.add(new TestBean().setId(2).setName("D"));
ArrayList<TestBean> res = list.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TestBean::getId))),
ArrayList::new));
System.out.println("res="+res);