Reports forEach() calls that can be replaced with a more concise method or from which intermediate steps can be extracted.

Example:


  List<String> findNStrings(List<String> list, int n) {
    List<String> other = new ArrayList<>();
    list.forEach(s -> {
      if(s.length() > n) other.add(s);
    });
    return other;
  }

After the quick-fix is applied:


  List<String> findNStrings(List<String> list, int n) {
    List<String> other = list.stream()
      .filter(s -> s.length() > n)
      .collect(Collectors.toList());
    return other;
  }

This inspection only reports if the language level of the project or module is 8 or higher.

New in 2017.3