edit:人们以负面的研究努力来标记它。在评论中让我知道问题出了什么问题,以便我重新设计或改进问题。
我需要在Java中验证Excel文件的18列。我有与某些条件匹配的列验证,这些条件与返回通用字符串的通用方法结合在一起,我需要在两个单独的bean中设置值。
我应该将它们存储在字符串中并使用两次或两次调用该方法。当前正在两次调用该方法。这是最好的解决方案。这种情况发生在for循环内的18列中。
private String getAlphaNumericValue(String data, String colName, int length) {
if (Validation.CheckStringNullAndEmpty(data)) {
if (data.length() <= length) {
if (data.matches(constants.ALPHA_NUMERIC_REGEX)) {
return data;
} else {
corrected.add(colName);
return Validation.AlphaNumeric(data);
}
} else {
corrected.add(colName);
if ((Validation.truncateString(data, length).matches(constants.ALPHA_NUMERIC_REGEX))) {
return Validation.truncateString(data, length);
} else {
return Validation.AlphaNumeric(Validation.truncateString(data, length));
}
}
}
return "";
}
for (CsvBean bean : beanList) {
CsvBean writeBean = new CsvBean();
if (Validation.CheckStringNullAndEmpty(bean.getNo())) {
writeBean.setNo(
getAlphaNumericValue(bean.getNo(), "No.", 50));
DTO.setNO(getAlphaNumericValue(bean.getNo(), "No.", 50))
} else {
writeBean.setNo("");
DTO.setNO("");
}
//for 18columns am doing same validation
blist.add(writeBean);
zlist.add(DTO)
}
让我知道最佳做法是什么?什么会导致性能下降,或者将其存储在字符串与方法调用中的效率如何?预先感谢。
答案 0 :(得分:1)
最好将String
存储在变量中。这样,您避免重复执行两次相同的工作(调用验证两次)。 “惩罚”是您将在堆栈内存中为一个String分配位置,但这确实不是问题。