2个不同的对象集合如何取交集和差集

本文介绍了如何在Java中通过重写equals和hashCode方法,对两个不同的对象集合进行交集和差集操作。示例代码展示了基于自定义条件的交集和差集计算,适用于具有特定字段匹配规则的对象集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//@com.fasterxml.jackson.annotation.JsonIgnore

private Date create_time;

/**

  • 修改时间

*/

@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)

@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd HH:mm:ss”)

// @com.fasterxml.jackson.annotation.JsonIgnore

private Date update_time;

/**

  • 是否删除 0、未删除 1、已删除

*/

private Integer is_delete;

public TbHuidou() {

}

/**

  • 重写eques方法

  • @param o

  • @return

*/

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

TbHuidou tbHuidou = (TbHuidou) o;

return dzh_no.equals(tbHuidou.dzh_no) && lc_no.equals(tbHuidou.lc_no) && product_code.equals(tbHuidou.product_code) && function_id.equals(tbHuidou.function_id);

}

/**

  • 重写hascode方法

  • @return

*/

@Override

public int hashCode() {

final int prime = 31;

int result = 17;

result = prime * result + (dzh_no == null ? 0 : dzh_no.hashCode());

result = prime * result + (lc_no == null ? 0 : lc_no.hashCode());

result = prime * result + (product_code == null ? 0 : product_code.hashCode());

result = prime * result + (function_id == null ? 0 : function_id.hashCode());

return result;

}

TrequestHuiDouVo

/**

  • 理财号

*/

private String vc_custno;

/**

  • 组合代码

*/

private String vc_combcode;

/**

  • 基金代码

*/

private String vc_fundcode;

取交集代码 tbHuidous数据不能重复 否则需要先去重复

public static void main(String[] args) {

List tbHuidous = new ArrayList<>();

TbHuidou tbHuidou = new TbHuidou();

tbHuidou.setCf_no(“1”);

tbHuidou.setDzh_no(“1”);

tbHuidou.setLc_no(“1”);

tbHuidou.setProduct_code(“1”);

tbHuidou.setFunction_id(“1”);

tbHuidou.setProduct_type(“1”);

tbHuidous.add(tbHuidou);

TbHuido 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 u tbHuidou2 = new TbHuidou();

tbHuidou2.setCf_no(“2”);

tbHuidou2.setDzh_no(“2”);

tbHuidou2.setLc_no(“2”);

tbHuidou2.setProduct_code(“2”);

tbHuidou2.setFunction_id(“2”);

tbHuidou2.setProduct_type(“2”);

tbHuidous.add(tbHuidou2);

List list = new ArrayList<>();

TrequestHuiDouVo trequestHuiDouVo = new TrequestHuiDouVo();

trequestHuiDouVo.setVc_custno(“1”);

trequestHuiDouVo.setVc_fundcode(“1”);

list.add(trequestHuiDouVo);

TrequestHuiDouVo trequestHuiDouVo2 = new TrequestHuiDouVo();

trequestHuiDouVo2.setVc_custno(“2”);

trequestHuiDouVo2.setVc_combcode(“2”);

list.add(trequestHuiDouVo2);

TrequestHuiDouVo trequestHuiDouVo3 = new TrequestHuiDouVo();

trequestHuiDouVo3.setVc_custno(“7”);

trequestHuiDouVo3.setVc_combcode(“7”);

list.add(trequestHuiDouVo3);

List list3 = tbHuidous.stream().filter(one -> {

List result = list.stream().map(two -> {

if (one.getProduct_type().equals(“1”) && one.getLc_no().equals(two.getVc_custno()) && one.getProduct_code().equals(two.getVc_fundcode())){

return true;

}else if (one.getProduct_type().equals(“2”) && one.getLc_no().equals(two.getVc_custno()) && one.getProduct_code().equals(two.getVc_combcode())){

return true;

}else {

return false;

}

// return one == two;

}).collect(Collectors.toList());

if (result.indexOf(true) > -1)

return true;

return false;

}).collect(Collectors.toList());

list3.stream().forEach(System.out::println);

}

取差集代码

public static void main(String[] args) {

List tbHuidous = new ArrayList<>();

TbHuidou tbHuidou = new TbHuidou();

tbHuidou.setCf_no(“1”);

tbHuidou.setDzh_no(“1”);

tbHuidou.setLc_no(“1”);

tbHuidou.setProduct_code(“1”);

tbHuidou.setFunction_id(“1”);

tbHuidou.setProduct_type(“1”);

tbHuidous.add(tbHuidou);

TbHuidou tbHuidou2 = new TbHuidou();

tbHuidou2.setCf_no(“2”);

tbHuidou2.setDzh_no(“2”);

tbHuidou2.setLc_no(“2”);

tbHuidou2.setProduct_code(“2”);

tbHuidou2.setFunction_id(“2”);

tbHuidou2.setProduct_type(“2”);

tbHuidous.add(tbHuidou2);

TbHuidou tbHuidou3 = new TbHuidou();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值