• java比较两个ArrayList,得出两者中的不同元素


    最近在做项目的过程中,遇到了比较两个内容为字符串List的需求,其内容为从数据库查出的数据与本地产生的数据进行对比,得出两者不同的元素,后来通过种种方式总结、优化出了一个比较简单的方法,不多说,直接贴代码:

     private static List getdifferentList(List list1,List list2){
    Map map=new HashMap();
    List longList=list1;
    List shortList=list2;
    if(list2.size()>list1.size()){
    longList=list2;
    shortList=list1;
    }
    for(String string:shortList){//将shortList放到map中,map的value任意数字即可
    map.put(string,0);
    }
    shortList.clear();//清空shortList,用于存放longList中有map中没有的数据
    Integer in;
    for(String string:longList){
       in=map.get(string);
    if(null==in){
    shortList.add(string);//longList中有map中没有的数据
    }
    }
    return shortList;
    }

    此方法的流程就是先将长度短的list以值为Key放到map里,然后通过遍历长度长的list,依次调用get()方法,如果当前map中没有此key值,说明此元素为不重复元素,放到清理后的shortList里,执行完毕后返回出去。

    需要注意两种细节问题,也是我当时遇到的:

    1.注意两个参数list的String元素中是否含有空格,如有空格隐患最好用下trim()方法(当初数据库数据有空格,本地数据没有空格,总是得出两份数据,后来通过排查,得出是空格的问题)

    2.根据需求来确定,如果其中一个list为空时,那么输出的将是另一个list的全部元素(避免其中一个list没有获取到值而传了进来)

  • 相关阅读:
    网络安全笔记 -- XSS跨站(原理、分类)
    xpah的使用
    设计模式-单例模式
    第三次CCF计算机软件能力认证
    Android集成腾讯TBS_X5内核的一些解决方法
    软磁交流测试系统参考标准
    【速度收藏】17条好用的Python技巧分享(含源代码)
    OSPF笔记(一):OSPF基本特点、自治系统、区域、RID冲突
    Conditional DETR浅析
    Spring Security基本框架之认证和授权
  • 原文地址:https://blog.csdn.net/liuliuhelingdao/article/details/126529533