StreamApiMigrationInspection: chained computeIfAbsent generated incorrect code

This commit is contained in:
Tagir Valeev
2016-12-20 10:56:31 +07:00
parent 7ebe6f583d
commit e778bb8680
3 changed files with 27 additions and 1 deletions
@@ -0,0 +1,11 @@
// "Replace with forEach" "true"
import java.util.*;
public class Main {
private Map<Integer, Map<Integer, List<String>>> test(String... list) {
Map<Integer, Map<Integer, List<String>>> map = new HashMap<>();
Arrays.stream(list).filter(Objects::nonNull).forEach(s -> map.computeIfAbsent(s.length(), k -> new HashMap<>()).computeIfAbsent(s.length(), k -> new ArrayList<>()).add(s));
return map;
}
}
@@ -0,0 +1,15 @@
// "Replace with forEach" "true"
import java.util.*;
public class Main {
private Map<Integer, Map<Integer, List<String>>> test(String... list) {
Map<Integer, Map<Integer, List<String>>> map = new HashMap<>();
for(String s : li<caret>st) {
if(s != null) {
map.computeIfAbsent(s.length(), k -> new HashMap<>()).computeIfAbsent(s.length(), k -> new ArrayList<>()).add(s);
}
}
return map;
}
}