我有两件学生用品。
class Student{
int physics;
int english;
int chemistry;
}
我需要把每个科目的学生A成绩和所有科目的学生B成绩进行比较。
物理A分需要和物理、英语、化学B分相比较。
同样地,A的英语和B的三种都是一样的。
如果至少有一场比赛说A的化学分数等于B的英语分数,
然后停止执行并返回false。
我的逻辑是
if(a.getPhysics==b.getPhysics || a.getPhysics==b.getEnglish || a.phy==b.chem || ...){
return false;
}
这是更好的逻辑还是其他更好的逻辑??????
最佳答案
好吧,无论如何,您都必须进行O(n^2)
比较,问题是代码的干净程度如何。
你现在的建议对6个布尔值比较有用,如果你有30个对象呢你会保持你需要做的百分之一百的比较吗?
保持简单,我更希望将分数保持在aList
或aMap
中,然后进行嵌套迭代:
for (int gradeA : thisStudent.getGrades()) {
for (int gradeB : otherStudent.getGrades()) {
if (gradeA == gradeB) return false;
}
}
return true;
当然,这段代码需要适应您的场景(列表和地图上的不同迭代,每次不检查每个等级的优化,从中提取方法等等)。