# Use Stream::filter
# Description
This rule transforms an if-Statement (without an else statement), which wraps the whole execution block of a Stream::forEach
method into a call to Stream::filter
with a lambda expression (Predicate) as parameter. This lambda is constructed using the expression from the if-Statement.
# Benefits
This rule provides an easier-to read alternative to filter items in a list.
# Tags
# Code Changes
Pre
List<String> list = Arrays.asList("foo", "bar");
list.stream().forEach(s -> {
if (s.length() > 3) {
System.out.println(s);
System.out.println(s + s);
}
});
Post
List<String> list = Arrays.asList("foo", "bar");
list.stream().filter((s)-> s.length() > 3).forEach((s)-> {
System.out.println(s);
System.out.println(s + s);
});
🛠️ Auto-refactor Available
You can auto-refactor this with jSparrow.
Drop this button to your Eclipse IDE workspace to install jSparrow for free:
Need help? Check out our installation guide.
# Properties
Property | Value |
---|---|
Rule ID | LambdaForEachIfWrapperToFilter |
First seen in jSparrow version | 2.0.0 |
Minimum Java version | 8 |
Remediation cost | 5 min |