项目背景

刚好项目要快速对比两张表的不同数据,但是提供的是id的列表(list),另外在数据库中,所以这里想出了一个办法,先从数据库中找出有的数据in(sql)出来先,然后用代码匹对,因为这里要查出提供的id列表哪些是多余的数据,所以代码返回多余id的list

结果:

1、list1中有97277条数据,list2中有37894条数据,两个list进行对比找出不同的数据共60000条左右,用时:0.051秒

2、list1中有97277条数据,list2中有97067条数据,两个list进行对比找出不同的数据共288条,用时:0.06秒

下面的方法是对比两个list相互不同的数据

也可以删除红色字的代码做成list1比list2多出多少数据

public static List getDiffrent(List list1, List list2){

Map map = new HashMap(list1.size()+list2.size());

List diff = new ArrayList();

List maxList = list1;

List minList = list2;

if(list2.size()>list1.size()){

maxList = list2;

minList = list1;

}

for (String string : maxList){

map.put(string, 1);

}

for (String string : minList){

Integer cc = map.get(string);

if(cc!=null){

map.put(string, ++cc);

continue;

}

map.put(string, 1);

}

for(Map.Entry entry:map.entrySet()){

if(entry.getValue()==1)

{

diff.add(entry.getKey());

}

}

return diff;

}

有人回复说不行,我再补充main方法,(受不了不给测试方法就说不行的人)

public static void main(String[] args) {

List list1 =new ArrayList();

for(int i=1;i<10;i++) {

list1.add(i+"");

}

List list2 =new ArrayList();

for(int i=5;i<10;i++) {

list2.add(i+"");

}

List list3 =getDiffrent(list1,list2);

List list4 =getDiffrent(list2,list1);

System.out.println(list1);

System.out.println(list2);

System.out.println("不同的值:"+list3);

System.out.println("不同的值:"+list4);

}

结果如图

java 取出集合前两个数据库_【Java】获取两个List中不同的数据(效率非常不错)-Go语言中文社区...相关推荐

  1. kubernetes中mysql乱码_在kubernetes中部署tomcat与mysql集群-Go语言中文社区

    在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础: 1. 已安装.配置kubernetes 2. 集群中有tomcat与mysql容器镜像 3. 有docker基础 具 ...

  2. java awt run_Java中awt基本组件及其使用方法-Go语言中文社区

    1,按钮 此类创建一个标签按钮.当按下该按钮时,应用程序能执行某项动作.它有两种构造方法: public Button() 构造一个标签字符串为空的按钮. public Button(String l ...

  3. centos7不能安装mysql数据库_Centos7 上安装mysql遇上的问题:mysql无法正常启动-Go语言中文社区...

    第一次在Centos上安装mysql遇到的一些问题. 第一步就遇到问题,安装mysql-server报错没有可用包. [解决方法] 先要安装mysql # wget http://repo.mysql ...

  4. java負數能取余_Java别说取余(%)运算简单,你真的会吗?-Go语言中文社区

    一,直击现场 下面我来抛出几道题: 说明m是商,n是余数: (1)正数%正数 3%2=m--.n 2%3=m--.n (2)正数%负数或者负数%正数 -3%2=m--.n 3%-2=m--.n -2% ...

  5. java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 转载文章请保留以下声明: 一:存储模式 留言或私信我,邀请你加入"图数据库交流"微信群! 1. ...

  6. java基础集合操作工具类Collections简述(java集合四)

    对集合中的元素进行排序 Collections中的sort方法使用 public class ListDemo {public static void main(String[] args) {Lis ...

  7. Java太密来福_这篇文章就是要让你入门java多线程【多线程入门】-Go语言中文社区...

    就在前几天,有位读者朋友私信宜春,说期待出一篇多线程的文章,我当时内心是小鹿乱撞啊-于是这几天茶不思饭不想,好几天深夜皆是辗转反侧,两目深凝,以至于这几天走起路来格外飘飘然,左摇右晃的,魔鬼般的步伐, ...

  8. java 获取两个时间差_java如何获取两个日期的时间差

    本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下 rainBeginTime是从本地数据库获取的时间,格式为"yyyy-MM-ddTHH:mm:ss" ...

  9. java可以写a手机app吗_‎JAVA程序员自学编程 a l’App Store

    *****Java程序员的给力助手***** -----本应用是一款java程序员自学参考手册,内容涵盖了所有java自学入门教程.高级教程以及数十道java经典面试题及代码答案,十分适合java开发 ...

最新文章

  1. 当初我要是这么学习Nginx就好了!(多图详解)
  2. 第十三届全国大学生智能汽车竞赛获奖名单
  3. 表达式解析执行器 IKExpression
  4. 计算机视觉研究入门全指南----新手博士需要准备的资料
  5. c语言汉字属于什么类型_狠准!你的名字属于什么类型 就是什么性格
  6. JDBC实现图书管理小案例
  7. 计算机专用英语词汇pdf,计算机专用英语词汇1500词.pdf
  8. 商业互吹?扎克伯格:后悔没早点学微信
  9. BitTorrent协议与MagNet协议原理
  10. 进程管理:fork与exec函数及fork子进程和父进程
  11. VMware安装linux镜像
  12. html简单网页代码
  13. 免费实时汇率查询接口
  14. 什么是数据库?什么是数据库管理系统? 说明两者的区别和联系。
  15. BIMC品牌整合营销:电子商务外包是中小企业未来发展方向
  16. 未分配虚拟网络-清理注册表
  17. http协议及httpd配置
  18. Android WebView重定向GOBACK问题
  19. kvm静态迁移error: Cannot access storage file
  20. Linux 知:coredump

热门文章

  1. 设置placeholder无效解决办法
  2. JNI线程、Linux常用命令、权限、防火墙配置
  3. 接口测试指导方案 转:紫漪
  4. CentOS 7系统关闭yum自动下载更新
  5. LeetCode 145. Binary Tree Postorder Traversal
  6. 一个就简单的数学题 NYOJ 330
  7. 去除MyEclipse频繁弹出的Update Progress窗口
  8. 调用Win32 API 之CreateCursor函数失败
  9. sqlite 日期时间类型学习1
  10. windows下cipher和efsdump工具的初步使用