diff options
author | TimeConqueror <timeconqueror999@gmail.com> | 2021-08-03 22:34:50 +0300 |
---|---|---|
committer | TimeConqueror <timeconqueror999@gmail.com> | 2021-08-03 22:34:50 +0300 |
commit | b9468785aa264ba0c1fcf295bb15260bb47c90c0 (patch) | |
tree | 7f16876d9bce26bbf0b1857cfd79155cd9f3f15d /src/main/java/gregtech/api/util/extensions | |
parent | 40dbbe312ddb16ac84024e3bed8dbae1a2c6c124 (diff) | |
download | GT5-Unofficial-b9468785aa264ba0c1fcf295bb15260bb47c90c0.tar.gz GT5-Unofficial-b9468785aa264ba0c1fcf295bb15260bb47c90c0.tar.bz2 GT5-Unofficial-b9468785aa264ba0c1fcf295bb15260bb47c90c0.zip |
GT_Recipe: speedup
Diffstat (limited to 'src/main/java/gregtech/api/util/extensions')
-rw-r--r-- | src/main/java/gregtech/api/util/extensions/ArrayExt.java | 23 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/extensions/IteratorExt.java | 23 |
2 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/util/extensions/ArrayExt.java b/src/main/java/gregtech/api/util/extensions/ArrayExt.java index faa01cb368..9b39f74518 100644 --- a/src/main/java/gregtech/api/util/extensions/ArrayExt.java +++ b/src/main/java/gregtech/api/util/extensions/ArrayExt.java @@ -32,6 +32,29 @@ public class ArrayExt { return objects; } + @SuppressWarnings("ForLoopReplaceableByForEach") + public static <T> T[] withoutNulls(T[] array, IntFunction<T[]> arrayFactory) { + int count = 0; + for (int i = 0; i < array.length; i++) { + if (array[i] != null) { + count++; + } + } + + T[] newArr = arrayFactory.apply(count); + if (count == 0) return newArr; + + int j = 0; + for (int i = 0; i < array.length; i++) { + if (array[i] != null) { + newArr[j] = array[i]; + j++; + } + } + + return newArr; + } + public static <T> T[] withoutTrailingNulls(T[] array, IntFunction<T[]> arrayFactory) { int firstNull = -1; for (int i = 0; i < array.length; i++) { diff --git a/src/main/java/gregtech/api/util/extensions/IteratorExt.java b/src/main/java/gregtech/api/util/extensions/IteratorExt.java new file mode 100644 index 0000000000..1a29a7b41a --- /dev/null +++ b/src/main/java/gregtech/api/util/extensions/IteratorExt.java @@ -0,0 +1,23 @@ +package gregtech.api.util.extensions; + +import gregtech.api.objects.iterators.ArrayIterator; +import gregtech.api.objects.iterators.MergedIterator; +import gregtech.api.objects.iterators.NonNullIterator; + +import java.util.Iterator; + +public class IteratorExt { + @SafeVarargs + public static <T> Iterator<T> merge(Iterator<T>... iterators) { + return new MergedIterator<>(iterators); + } + + public static <T> Iterator<T> withoutNulls(Iterator<T> iterator) { + return new NonNullIterator<>(iterator); + } + + @SafeVarargs + public static <T> ArrayIterator<T> ofArray(T... items) { + return new ArrayIterator<>(items); + } +} |