探讨:通过循环数组或者集合,插入数据库中没有的数据
【场景】
要将一组物品 As 放入盒子 Bs 中,如果盒子有该物品,则不把该物品放入盒子。
即,通过循环数组或者集合,插入数据库中没有的数据。
【业务分析】
经常会有初学者进行类似于如下的循环判断
for(A a : As){ for(B b : Bs){ if (B.equals(A)) { break; } else { insert(A) } } }
这段代码存在如下问题:
- 在判断 Bs 中是否有 a 时,会把 Bs 中的所有物品与 a 对比,此时只要 Bs 中有与 a 不相等的物品,就会把 a 插入到数据库。换句话说就是,Bs 中有多个与 a 不相等的物品,那么 a 将被多次插入到数据库中。
- 如果 Bs 只有两个物品,那么你将很难从数据库中的数据发现这个问题。
而正确的逻辑判断应该是如下代码:
/** * 声明一个标志,默认数据时可以插入数据库的 * 当出现相等的时候,将该标志设置为 false。 * 当不相等时,不对标志进行处理 * 循环完成后,再对标志进行判断, * true,表示循环中没有相同的物品,可以插入 * false,表示循环中有相同的物品,不插入 */ flag in = true for(A a : As){ for(B b : Bs){ if (B.equals(A)) { in = false; break; } } if(in){ insert(A) } }
如果你有更优化的方案,请在评论区回复。欢迎大家指正。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaWeb技术内幕八:JVM内存管理
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/81517099 微信公众号【黄小斜】大厂程序员,互联网行业新知,终身学习践行者。关注后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。 欢迎阅读我的专栏:JavaWeb技术世界 ’与其他高级语言不一样,在Java中基本上不会显示地调用分配内存的函数,我们甚至不用关心到底哪些程序指令需要分配内存,哪些不需要分配内存。 我们首先需要从操作系统层面理解物理内存的分配和Java运行的内存分配之间的关系。 物理内存与虚拟内存 1 物理内存就是RAM,还有一个存储单元叫做寄存器,连接处理器和RAM或者寄存器的是地址总线,这个地址总线的宽度影响了物理地址的索引范围,32位地址总线可以寻址4gb内存。 2 除了硬...
- 下一篇
推荐一款团队协作软件---confluence
最近发现一款非常好的团队协作软件--confluence,它可以做技术博客,发送文章,下面评论,点赞.也可以作为公司内部的团队协作软件,在线编辑word,execel,ppt等。这个功能与腾讯的在线编辑word,execel类似。但是它的功能更强大。 环境准备 ◦CentOS 6.5 ◦java jdk 1.8 ◦mysql-server 5.6 ◦confluence 5.6.6 当然也有windows版本(可以自己玩),企业的话最好还是放在服务器当中稳定 下载confiluence及其破解包 confluence有很多版本,我们可以直接通过如下连接进行查看confluence下载地址 image.png 通过上图,我们可以看出confluence对于windows和linux平台每一个版本有多种安装包, 在此我们选择的是bin方式。除此之外,我们也可以看到目前confluence最新版本是6.0.1。 下载confluence5.6.6 curl -o atlassian-confluence-5.6.6-x64.binconfluence破解包 创建数据库 在安装confluen...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 2048小游戏-低调大师作品
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)