两个泛型为对象的List,根据对象的某些属性来取差集

通过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());

菜鸟Java8新特性API地址
参考地址


版权声明:本文为DQ1521166966原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。