两次调用方法或将值存储在变量中并在需要时使用它会消耗内存吗?

时间:2019-08-24 05:11:25

标签: java

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)
}

让我知道最佳做法是什么?什么会导致性能下降,或者将其存储在字符串与方法调用中的效率如何?预先感谢。

1 个答案:

答案 0 :(得分:1)

最好将String存储在变量中。这样,您避免重复执行两次相同的工作(调用验证两次)。 “惩罚”是您将在堆栈内存中为一个String分配位置,但这确实不是问题。