[使用多个if语句时的java方法重构

问题描述 投票:0回答:1

当使用多个if语句时,如何重构以下代码?是否有其他替代方法?

StringBuffer sb = new StringBuffer();

//rowData is rows read from a file
if (rowData.size() > 24){
    sb.append(rowData.get(24).trim());
}
sb.append("|");

if (rowData.size() > 25){
    sb.append(rowData.get(25).trim());
}
sb.append("|");

if (rowData.size() > 26){
    sb.append(rowData.get(26).trim());
}
sb.append("|");

if (rowData.size() > 27){
    sb.append(rowData.get(27).trim());
}
sb.append("|");

if (rowData.size() > 28){
    sb.append(rowData.get(28).trim());
}
sb.append("|");

if (rowData.size() > 29){
    sb.append(rowData.get(29).trim());
}
java refactoring java-6
1个回答
1
投票

按照建议将索引放入循环中会给你这个

    for (int i = 24; i < 30; i++) {   
        if (rowData.size() > i){         
            sb.append(rowData.get(i).trim());
            sb.append(i <= 29 ? "|" : "");
        }
    }

在更现代的Java版本中,也可以这样做:

    IntStream.range(24, 29).forEach(i ->
    {            
        if (rowData.size() > i){         
            sb.append(rowData.get(i).trim());
            sb.append(i <= 29 ? "|" : "");
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.