java list 比较详解及实例

java里比较两个list的值是否一致,不考虑顺序,有多种方法,比如排序后直接用equals比较,相互之间执行两次containsAll等,这些办法都需要我们给list的元素类实现equals和hashcode方法。但是有一种特殊情况,如果我们并不方便去实习类的equals方法,例如是一个古老的第三方jar包,改代码会带来很多未知问题,这时候该怎么办呢。
其实很简单,万能的apache-commons早就想到了这一点,所以在commons-collections4中增加了外部输入equals和hashcode的方法,甚至equals和hashcode方法本身也不需要我们自己写代码,可以用comons-lang包实现,具体代码如下
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
public static <T> boolean isEqualCollection(Collection<T> l1, Collection<T> l2, final String... exludedFields) {
Equator<T> equator = generateEquator(exludedFields);
return CollectionUtils.isEqualCollection(l1, l2, equator);
}
private static <T> Equator<T> generateEquator(final String... exludedFields) {
Equator<T> equator = new Equator<T>() {
@Override
public boolean equate(T o1, T o2) {
if (o1 == null && o2 == null) {
return true;
}
if (o1 == null || o2 == null) {
return false;
}
if (o1.getClass() != o2.getClass()) {
return false;
}
return EqualsBuilder.reflectionEquals(o1, o2, exludedFields);
}
@Override
public int hash(T o) {
return HashCodeBuilder.reflectionHashCode(o, exludedFields);
}
};
return equator;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# list
# 比较详解
# list对比
# Java比较两个List的值是否相等的方法
# Java中两个List之间的比较方法(差集、交集和并集)
# Java Stream比较两个List的差异并取出不同的对象四种方法
# 是一个
# 也不
# 可以用
# 两次
# 有多
# 希望能
# 相互之间
# 种方法
# 谢谢大家
# 第三方
# 一种特殊
# 其实很简单
# 便去
# 增加了
# 这时候
# 但是有
# brush
# lt
# class
# lang
相关文章:
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
为什么Go需要go mod文件_Go go mod文件作用说明
如何用已有域名快速搭建网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何快速生成专业多端适配建站电话?
制作企业网站建设方案,怎样建设一个公司网站?
Python如何创建带属性的XML节点
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何在Windows 2008云服务器安全搭建网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
建站之星代理如何优化在线客服效率?
如何选择高效稳定的ISP建站解决方案?
已有域名和空间如何搭建网站?
如何选择靠谱的建站公司加盟品牌?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
教学论文网站制作软件有哪些,写论文用什么软件
?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在IIS服务器上快速部署高效网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何配置IIS站点权限与局域网访问?
如何快速搭建响应式可视化网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
c++怎么用jemalloc c++替换默认内存分配器【性能】
建站之星官网登录失败?如何快速解决?
如何在宝塔面板中创建新站点?
如何通过虚拟主机空间快速建站?
如何用花生壳三步快速搭建专属网站?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
香港服务器部署网站为何提示未备案?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
Python文件管理规范_工程实践说明【指导】
建站主机空间推荐 高性价比配置与快速部署方案解析
如何在阿里云域名上完成建站全流程?
如何选择服务器才能高效搭建专属网站?
如何通过IIS搭建网站并配置访问权限?
微信小程序 input输入框控件详解及实例(多种示例)
实现虚拟支付需哪些建站技术支撑?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
学校建站服务器如何选型才能满足性能需求?
C#如何序列化对象为XML XmlSerializer用法
代购小票制作网站有哪些,购物小票的简要说明?
深圳网站制作案例,网页的相关名词有哪些?
如何在IIS中配置站点IP、端口及主机头?
北京网站制作的公司有哪些,北京白云观官方网站?
如何在七牛云存储上搭建网站并设置自定义域名?
建站主机与虚拟主机有何区别?如何选择最优方案?
建站之星安装模板失败:服务器环境不兼容?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
*请认真填写需求信息,我们会在24小时内与您取得联系。