探讨:通过循环数组或者集合,插入数据库中没有的数据
【场景】
要将一组物品 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条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果