java比较两个list是否相同equals的代码详解
时间:2021-02-01 09:57:30|栏目:JAVA代码|点击: 次
比较两个list是否相同,一般我用数组自带的函数equals,如:
public int updateTemplateByVO(ContentTemplateVO contentTemplateVO) throws Exception {
int flag = 0;
if (null == contentTemplateVO) {
return flag;
}
//比较新编辑的模板参数是否与原有的参数相同
//新的参数数组
List<String> stringList = getParamListFromTemplateContent(contentTemplateVO);
//旧的参数数组
List<TContentTemplateParam> tContentTemplateParamList = selectTemplateParamsByTemplateId(contentTemplateVO.getId());
List<String> paramList = new ArrayList<String>();
//将从表里获取的数组重新整理成包含相同类型的list数组
for (TContentTemplateParam contentParam : tContentTemplateParamList) {
paramList.add(contentParam.getParamName());
}
//比较两个list
Boolean sameSortFlag = stringList.equals(paramList);
String content = contentTemplateVO.getSmsMsgContent();
StringBuilder stringBuilder = new StringBuilder(content);
//参数有修改则重新排序
if (!sameSortFlag) {
String newContent = rightSortForContentParam(contentTemplateVO.getSmsMsgContent());
contentTemplateVO.setSmsMsgContent(newContent);
}
contentTemplateVO.setUpdateTime(DateUtil.getNowAsDate());
TContentTemplate tContentTemplate = ModelCopyUtil.copy(contentTemplateVO, TContentTemplate.class);
flag = tContentTemplateMapper.updateByPrimaryKeySelective(tContentTemplate);
if (flag == 1 && (!sameSortFlag)) {
//先删除对应模板的参数配置
deleteContentTemplateParam(contentTemplateVO);
//重新配置模板参数
addContentTemplateParam(contentTemplateVO);
}
return flag;
}
内容扩展:
Java的俩个list之间比较,判断是否一致的方法
前文
我看了一篇博客,是关于判断俩个list的。看完之后我觉得可能并不是很好。
结合他的思路,我重新整理了一下代码。
同时也看了看String中的equals的实现。
import java.util.List;
public class ListUtil {
/**
* 使用时,务必保证每个对象中实现了equals()方法。
* 如果是自己写的类,比如,Dog,Cat这些的,请重写Object中的equals方法!
*
* @param aList 左右顺序无所谓
* @param bList 左右顺序无所谓
* @return 尽可能避免相同的情况
*/
public static boolean equals(List aList, List bList) {
if (aList == bList)
return true;
if (aList.size() != bList.size())
return false;
int n = aList.size();
int i = 0;
while (n-- != 0) {
if (!aList.get(i).equals(bList.get(i)))
return false;
i++;
}
return true;
}
}
代码过程
首先判断俩个对象是否相同,如果相同,直接返回true。
接着判断俩个的长度是否相同,相同才有比较的意义。
依照size,对list进行遍历。这里是需要用到equals方法,所以在对自己写的一些实体类判断的时候,一定要记得实现覆写hashCode()和equals()方法!同时切记equals方法的传入参数为Object!否则会因为重载的原因,不调用你写的方法。
最后,这个代码算法复杂度为n。
上一篇:Springboot全局异常捕获及try catch区别解析
栏 目:JAVA代码
下一篇:Java Swing组件文件选择器JFileChooser简单用法示例
本文标题:java比较两个list是否相同equals的代码详解
本文地址:http://www.codeinn.net/misctech/55128.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




