概述
背景
有一个list,实体包含多个字段,当其中两个字段值均相同时,就认为list中的这两条记录是一样的
去重
java8中有一个collectingAndThen可以根据多个字段去重
依据姓名和年龄去重,当姓名和年龄相同时,认为这两个实体相同
class FlightTicketInfo {
private String orderNumber;
private String userName;
private String age;
public FlightTicketInfo(String orderNumber, String userName, String age) {
this.orderNumber = orderNumber;
this.userName = userName;
this.age = age;
}
@Override
public String toString() {
return "FlightTicketInfo{" +
"orderNumber='" + orderNumber + ''' +
", userName='" + userName + ''' +
", age='" + age + ''' +
'}';
}
public String getOrderNumber() {
return orderNumber;
}
public String getUserName() {
return userName;
}
public String getAge() {
return age;
}
}
@Test
public void testList(){
List<FlightTicketInfo> infoList = new ArrayList<>();
infoList.add(new FlightTicketInfo("11111", "xiaoming", "22"));
infoList.add(new FlightTicketInfo("22222", "xiaoming", "22"));
infoList.add(new FlightTicketInfo("33333", "xiaoming", "23"));
infoList.add(new FlightTicketInfo("11111", "xiaoming", "22"));
infoList.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getUserName()+f.getAge()))), ArrayList::new))
.forEach(System.out::println);
}
最后
以上就是冷静便当为你收集整理的JAVA8 - 使用stream api进行list集合指定字段去重的全部内容,希望文章能够帮你解决JAVA8 - 使用stream api进行list集合指定字段去重所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复