# Replace For-Loop with Enhanced-For-Loop

# Description

Since Java 1.5 enhanced for-loops can be used to iterate over collections. This rule replaces old for-loops utilizing iterators with enhanced for-loops in order to improve readability.

# Benefits

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

# Tags

# Code Changes

Pre

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

Post

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

# Limitations

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

🛠️ Auto-refactor Available

You can auto-refactor this with jSparrow.
Drop this button to your Eclipse IDE workspace to install jSparrow for free:

Drag to your running Eclipse* workspace. *Requires Eclipse Marketplace Client

Need help? Check out our installation guide.

# Properties

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