mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
StreamToLoop/ToPrimitiveArrayTerminalOperation: reassign final array making it possible to reuse existing variable
This commit is contained in:
@@ -449,9 +449,9 @@ abstract class TerminalOperation extends Operation {
|
||||
|
||||
@Override
|
||||
String generate(StreamVariable inVar, StreamToLoopReplacementContext context) {
|
||||
String arr = context.declareResult("arr", myType + "[]", "new " + myType + "[10]", ResultKind.UNKNOWN);
|
||||
String arr = context.declareResult("arr", myType + "[]", "new " + myType + "[10]", ResultKind.NON_FINAL);
|
||||
String count = context.declare("count", "int", "0");
|
||||
context.setFinisher("java.util.Arrays.copyOfRange("+arr+",0,"+count+")");
|
||||
context.addAfterStep(arr + "=java.util.Arrays.copyOfRange(" + arr + ",0," + count + ");\n");
|
||||
return "if(" + arr + ".length==" + count + ") " + arr + "=java.util.Arrays.copyOf(" + arr + "," + count + "*2);\n" +
|
||||
arr + "[" + count + "++]=" + inVar + ";\n";
|
||||
}
|
||||
|
||||
+2
-1
@@ -13,7 +13,8 @@ public class Main {
|
||||
arr[count++] = x;
|
||||
}
|
||||
}
|
||||
return Arrays.copyOfRange(arr, 0, count);
|
||||
arr = Arrays.copyOfRange(arr, 0, count);
|
||||
return arr;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// "Replace Stream API chain with loop" "true"
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class Main {
|
||||
public int[] testPrimitive(List<String> list) {
|
||||
List<String> toSort = new ArrayList<>();
|
||||
for (String s : list) {
|
||||
toSort.add(s);
|
||||
}
|
||||
toSort.sort(null);
|
||||
int[] ints = new int[10];
|
||||
int count = 0;
|
||||
for (String s : toSort) {
|
||||
int length = s.length();
|
||||
if (ints.length == count) ints = Arrays.copyOf(ints, count * 2);
|
||||
ints[count++] = length;
|
||||
}
|
||||
ints = Arrays.copyOfRange(ints, 0, count);
|
||||
return ints;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(Arrays
|
||||
.toString(new Main().testPrimitive(asList("sdfg", "asd", "sdgfdsg", "adas", "asgfsgf", "werrew"))));
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// "Replace Stream API chain with loop" "true"
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class Main {
|
||||
public int[] testPrimitive(List<String> list) {
|
||||
int[] ints = list.stream().sorted().mapToInt(String::length).<caret>toArray();
|
||||
return ints;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(Arrays
|
||||
.toString(new Main().testPrimitive(asList("sdfg", "asd", "sdgfdsg", "adas", "asgfsgf", "werrew"))));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user