Replace While-Loop with Enhanced For-Loop

Properties

Property Value
First seen in jSparrow version 1.0.0
Minimum Java version 5
Remediation cost 5 min

Description

Applying this rule replaces While-loops over iterators with an equivalent for-loop.

Benefits

Applying this rule leads to more simplicity in the code base by using new language constructs.

Requirement & Tags

Requirements

Java 5

Code Changes

Pre

public String testWhileToFor(String input) {
    List<String> l = generateList(input);
    StringBuilder sb = new StringBuilder();
    Iterator<String> iterator = l.iterator();
    while (iterator.hasNext()) {
        String s = iterator.next();
        sb.append(s);
    }
    return sb.toString();
}

Post

public String testWhileToFor(String input) {
    List<String> l = generateList(input);
    StringBuilder sb = new StringBuilder();
    for (String s : l) {
        sb.append(s);
    }
    return sb.toString();
}

Limitations

Loops where the body modifies the iterator in some way will not be transformed.

Automatic Application of This Rule

The automatic application of this rule is supported in the following jSparrow version: