diff --git a/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java b/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java index 309ffaeb1030..cd105afa3ab5 100644 --- a/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java +++ b/java/java-impl/src/com/intellij/codeInspection/streamMigration/CollectMigration.java @@ -193,7 +193,7 @@ class CollectMigration extends BaseStreamApiMigration { @Nullable PsiLocalVariable getTargetVariable() { return myTargetVariable; } - String generateIntermediate() { return ""; } + abstract String generateIntermediate(); StreamEx targetReferences() { List usedElements = usedElements().toList(); @@ -415,6 +415,11 @@ class CollectMigration extends BaseStreamApiMigration { return false; } + @Override + String generateIntermediate() { + return myDownstream.myElement.getType() instanceof PsiPrimitiveType ? ".boxed()" : ""; + } + @Override public String generateTerminal() { String downstreamCollector = myDownstream.generateCollector(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/afterGroupingByPrimitive.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/afterGroupingByPrimitive.java new file mode 100644 index 000000000000..1a243d2c0ee4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/afterGroupingByPrimitive.java @@ -0,0 +1,11 @@ +// "Replace with collect" "true" +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class Main { + public void test() { + String[] values = {"a", "b", "c"}; + Map> map = IntStream.range(0, values.length).boxed().collect(Collectors.groupingBy(i -> "X" + i, Collectors.mapping(i -> values[i], Collectors.toList()))); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/beforeGroupingByPrimitive.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/beforeGroupingByPrimitive.java new file mode 100644 index 000000000000..7f95a02c8c4a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/collect/beforeGroupingByPrimitive.java @@ -0,0 +1,12 @@ +// "Replace with collect" "true" +import java.util.*; + +public class Main { + public void test() { + String[] values = {"a", "b", "c"}; + Map> map = new HashMap<>(); + for (int i = 0; i < values.length; i++) { + map.computeIfAbsent("X" + i, k -> new ArrayList<>()).add(values[i]); + } + } +}