# Replace While-Loop with Enhanced For-Loop

# Properties

Property Value
Rule ID WhileToForEach
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.

# 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:

# Tags

1
default
You & jSparrow
default

Hey there! May I help you? 😊