Search code examples
javarefactoringjava-6

java method refactoring when multiple if statements are used


How to refactor the below code when multiple if statements are used? Is there an alternate way for doing this?

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

Solution

  • Putting the indexing in a loop as suggested would give you this

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

    In a more contemporary Java version also this could be done:

        IntStream.range(24, 29).forEach(i ->
        {            
            if (rowData.size() > i){         
                sb.append(rowData.get(i).trim());
                sb.append(i <= 29 ? "|" : "");
            }
        });