【场景】
要将一组物品 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 = truefor(A a : As){ for(B b : Bs){ if (B.equals(A)) { in = false; break; } } if(in){ insert(A) }}如果你有更优化的方案,请在评论区回复。欢迎大家指正。
继续阅读与本文标签相同的文章
上一篇 :
css的2D转换
下一篇 :
第12章 样式(二)
-
AI如何更好地协助人类,我们从美食游戏中得到了一些启发
2026-05-27栏目: 教程
-
想成为排名第一的AI公司?建立一支“数据军团”,雇佣这些人吧
2026-05-27栏目: 教程
-
高达上百亿元!国家发钱能否为地方高校发展解困
2026-05-27栏目: 教程
-
剑桥数学家们花费三年半,跟踪100名顶级安全分析师,开发了一支AI网络安全护卫队
2026-05-27栏目: 教程
-
照骗终结者,新研究使用胶囊网络检测虚假图像|一周AI最火论文
2026-05-27栏目: 教程
