两个泛型为对象的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());

//根据不同属性筛选相同的数据
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());

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值