通过Java 8 新特性Stream和Lambda 表达式实现
/**
*user对象
*/
public class User{
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age= age;
}
}
/**
* @方法描述:获取两个ArrayList的差集
* @param firstArrayList 第一个ArrayList
* @param secondArrayList 第二个ArrayList
* @return resultList 差集ArrayList
*/
public static List<User> receiveDefectList(List<User> firstArrayList,
List<User> secondArrayList) {
List<User> resultList = firstArrayList.stream()
.filter(item -> !secondArrayList.stream().map(e -> e.getName() + "|" + e.getAge())
.collect(Collectors.toList()).contains(item.getName() + "|" + item.getAge()))
.collect(Collectors.toList());
//替换掉所有的id
//resultList.forEach( e -> {e.setId("11111");} );
//打印差集结果
resultList.forEach(System.out::println);
return resultList;
}
List<User> collect 全集
firstArrayList 第一个ArrayList
List<User> otherList = collect.stream().filter(item -> !firstArrayList .contains(item)).collect(Collectors.toList());
//根据不同属性筛选相同的数据
List<User> duplicates = travelList.stream()
.collect(Collectors.groupingBy(
p -> p.getAge() + "-" + p.getName(), Collectors.toList()))
.values().stream().filter(i -> i.size() > 1).flatMap(j -> j.stream()).collect(Collectors.toList());