diff options
| author | Martin Robertz <dream-master@gmx.net> | 2021-08-05 19:28:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-05 19:28:27 +0200 |
| commit | f9bfb2feafe8ae7c1026738a906f5a7f19f496c4 (patch) | |
| tree | 3901a255d2573f21f07018ac9a0f6bbebe30ba10 /src/main/java/gregtech/api/util/extensions | |
| parent | d5736f33eb91377d82d4474a7968f890450c517e (diff) | |
| parent | 35937ca89911c2b29f0a6027963c7439762045e7 (diff) | |
| download | GT5-Unofficial-f9bfb2feafe8ae7c1026738a906f5a7f19f496c4.tar.gz GT5-Unofficial-f9bfb2feafe8ae7c1026738a906f5a7f19f496c4.tar.bz2 GT5-Unofficial-f9bfb2feafe8ae7c1026738a906f5a7f19f496c4.zip | |
Merge pull request #625 from GTNewHorizons/speedup
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 | 31 | ||||
| -rw-r--r-- | src/main/java/gregtech/api/util/extensions/IteratorExt.java | 12 |
2 files changed, 38 insertions, 5 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..51486bc036 100644 --- a/src/main/java/gregtech/api/util/extensions/ArrayExt.java +++ b/src/main/java/gregtech/api/util/extensions/ArrayExt.java @@ -32,15 +32,36 @@ 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++) { + for (int i = array.length - 1; i >= 0; i--) { if (array[i] == null) { - if (firstNull == -1) { - firstNull = i; - } + firstNull = i; } else { - firstNull = -1; + break; } } 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..d59bb298a4 --- /dev/null +++ b/src/main/java/gregtech/api/util/extensions/IteratorExt.java @@ -0,0 +1,12 @@ +package gregtech.api.util.extensions; + +import gregtech.api.objects.iterators.MergedIterator; + +import java.util.Iterator; + +public class IteratorExt { + @SafeVarargs + public static <T> Iterator<T> merge(Iterator<T>... iterators) { + return new MergedIterator<>(iterators); + } +} |
