使用Java 6
要检查70多个属性,如下所示。重构代码的最佳方法是什么?
if(0 == compareField1) {
if(0 == compareField2) {
if(0 == compareField3) {
if(0 == compareField4) {
if(0 == compareField5) {
......
} else {
return compareField5;
}
} else {
return compareField4;
}
} else {
return compareField3;
}
} else {
result = compareField2;
}
} else {
result = compareField1;
}
答案 0 :(得分:7)
您可以使用整数数组,其中索引为X的单元格将保留字段编号X的值
final int fieldsCount = 60;
int[] fields = new int[fieldsCount ];
fields = loadFields(); // here you are populating fields
for(int i = 0; i < fieldsCount ; i++) if(fields[i] != 0) return fields[i];
// further logic (else)
答案 1 :(得分:1)
嗯...是这样的吗?
for (int result : Arrays.asList(compareField1, compareField2, ..., compareField5)) {
if (result != 0) return result;
}
另外,看看this
答案 2 :(得分:0)
没有提供实际的代码示例。
您说的是
有2个列表。遍历这些列表并使用比较器比较所有属性的对象,以检查它们是否相等。只需要获取不在列表1中的对象。
我会将两个列表都转换为一个集合(list1> set1和list2> set2),如果顺序不相关,则将HashSet转换,如果需要顺序的对象,则将TreeSet转换。例如
Set<whatevertype> set1 = new HashSet<whatevertype>(list1);
然后,您可以简单地使用set2中removeAll()的set1项目,例如:
set2.removeAll(set1);
set2'的左边是一组不在set1中的对象的截短集合。