# Replace While-Loop with Enhanced For-Loop

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

# Tags

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

You Want To Have Those Changes Done Automatically?

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

# Properties

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