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

使用多个if语句时的java方法重构,java,refactoring,java-6,Java,Refactoring,Java 6,当使用多个if语句时,如何重构下面的代码?有没有其他方法可以做到这一点 StringBuffer sb = new StringBuffer(); if (rowData.size() > 24){ sb.append(rowData.get(24).trim()); } sb.append("|"); if (rowData.size() > 25){ sb.append(rowData.get(25).t

当使用多个if语句时,如何重构下面的代码?有没有其他方法可以做到这一点

    StringBuffer sb = new StringBuffer();

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

按照建议将索引放在一个循环中会得到以下结果

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

sb.append(我觉得你可以使用for循环来循环条件中的数字。你试过了吗?开始时会有一个额外的|。此外,范围的上限是独占的,所以可以使用rangeClosed或30。可能分隔符不依赖于大小(总是相同的数量…)
    IntStream.range(24, 29).forEach(i ->
    {            
        if (rowData.size() > i){         
            sb.append(rowData.get(i).trim());
            sb.append(i <= 29 ? "|" : "");
        }
    });