您现在的位置是:首页 > 文章详情

探讨:通过循环数组或者集合,插入数据库中没有的数据

日期:2018-08-07点击:395

【场景】

要将一组物品 As 放入盒子 Bs 中,如果盒子有该物品,则不把该物品放入盒子。

即,通过循环数组或者集合,插入数据库中没有的数据。

【业务分析】

经常会有初学者进行类似于如下的循环判断

for(A a : As){ for(B b : Bs){ if (B.equals(A)) { break; } else { insert(A) } } }

这段代码存在如下问题:

  1. 在判断 Bs 中是否有 a 时,会把 Bs 中的所有物品与 a 对比,此时只要 Bs 中有与 a 不相等的物品,就会把 a 插入到数据库。换句话说就是,Bs 中有多个与 a 不相等的物品,那么 a 将被多次插入到数据库中。
  2. 如果 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) } } 

如果你有更优化的方案,请在评论区回复。欢迎大家指正。

原文链接:https://yq.aliyun.com/articles/623405
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章