java比较两个list是否相同equals的代码详解

 更新时间:2020年02月04日 16:57:52   作者:生之须臾亦不负  
在本篇文章里小编给大家分享的是关于java比较两个list是否相同equals的代码详解,有需要的朋友们可以参考学习下。

比较两个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。

以上就是本次介绍的全部相关知识点,感谢大家的学习和对脚本之家的支持。

相关文章

  • Java基于FFmpeg实现Mp4视频转GIF

    Java基于FFmpeg实现Mp4视频转GIF

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文主要介绍了在Java中如何基于FFmpeg进行Mp4视频到Gif动图的转换,感兴趣的小伙伴可以了解一下
    2022-11-11
  • java返回集合为null还是空集合及空集合的三种写法小结

    java返回集合为null还是空集合及空集合的三种写法小结

    这篇文章主要介绍了java返回集合为null还是空集合及空集合的三种写法小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot的启动速度优化

    SpringBoot的启动速度优化

    随着我们项目的不断迭代 Bean 的数量会大大增加,如果都在启动时进行初始化会非常耗时,本文主要介绍了SpringBoot的启动速度优化,感兴趣的可以了解一下
    2023-09-09
  • 记一次公司JVM堆溢出抽丝剥茧定位的过程解析

    记一次公司JVM堆溢出抽丝剥茧定位的过程解析

    这篇文章主要介绍了记一次公司JVM堆溢出抽丝剥茧定位的过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • java判读数组中是否有重复值的示例

    java判读数组中是否有重复值的示例

    这篇文章主要介绍了java判读数组中是否有重复值的示例,需要的朋友可以参考下
    2014-04-04
  • java异常处理的简单练习

    java异常处理的简单练习

    下面小编就为大家带来一篇java异常处理的简单练习。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Java实现五子棋网络版

    Java实现五子棋网络版

    这篇文章主要为大家详细介绍了基于Java编写的网络五子棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Springboot的spring-boot-maven-plugin导入失败的解决方案

    Springboot的spring-boot-maven-plugin导入失败的解决方案

    这篇文章主要介绍了Springboot的spring-boot-maven-plugin导入失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java根据url抓取并生成缩略图的示例

    java根据url抓取并生成缩略图的示例

    这篇文章主要介绍了java根据url抓取并生成缩略图的示例,需要的朋友可以参考下
    2014-05-05
  • Java中的ReentrantReadWriteLock实现原理详解

    Java中的ReentrantReadWriteLock实现原理详解

    这篇文章主要介绍了Java中的ReentrantReadWriteLock实现原理详解,读写锁实现了接口ReadWriteLock,适合于读多写少的情况,支持公平锁和非公平锁,支持可冲入(进入读锁后可再进入读锁,进入写锁后可再进入写锁和读锁),需要的朋友可以参考下
    2024-01-01

最新评论