ArrayUtil class
Пакет: com.hypixel.hytale.builtin.hytalegenerator
Файл: com/hypixel/hytale/builtin/hytalegenerator/ArrayUtil.java
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Object[] |
var1 |
|
Object[] |
var2 |
|
List |
var2 |
|
int[] |
var2 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
int |
var3 |
|
|
var3 |
|
int[] |
var4 |
|
int |
var4 |
|
int |
var4 |
|
|
var4 |
|
int |
var5 |
|
int |
var5 |
|
Object |
var6 |
|
int |
var7 |
|
int |
var7 |
|
List |
var8 |
Методы (26)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("arrays must have the same size") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("parts must be greater than 0") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("total and/or parts must be greater than 0") |
static |
<T, G> int |
binarySearch<T, G> int binarySearch(@Nonnull List<T> var0, @Nonnull G var1, @Nonnull BiFunction<G, T, Integer> var2) |
abstract |
return |
binarySearchreturn binarySearch(var0, var1, var2) |
static |
<T> void |
copy<T> void copy(@Nonnull T[] var0, @Nonnull T[] var1) |
|
|
for for(int var10 = 0; var10 < var3; var10++) |
|
|
for for(int var11 = var3; var11 < var1; var11++) |
|
|
for for(int var6 = 0; var6 < var1; var6++) |
|
|
for for(int var9 = 0; var9 < var7; var9++) |
|
|
for for(int var5 = 0; var5 < var1; var5++) |
abstract |
|
for for(int var4 = 0; var4 < var0.size() |
static |
int[] |
getPartSizesint[] getPartSizes(int var0, int var1) |
|
|
if if(var0.length != var1.length) |
|
|
if if(var1 < 1) |
|
|
if if(var1 == 1) |
|
|
if if(var3 <= var1) |
|
|
if if(var0 >= 0 && var1 >= 1) |
|
|
if if(var0 == 0) |
|
|
if if(var5 < var4) |
|
|
if if(var7 == 0) |
|
|
if if(var3 == var4 - 1) |
|
|
if if(var7 == -1) |
|
|
if if(var7 == 1) |
static |
<T, G> int |
sortedSearch<T, G> int sortedSearch(@Nonnull List<T> var0, @Nonnull G var1, @Nonnull BiFunction<G, T, Integer> var2) |
|
|
while while(true) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.function.BiFunction;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ArrayUtil {
class="kw">public ArrayUtil() {
}
@Nonnull
class="kw">public class="kw">static <T> T[] brokenCopyOf(@Nonnull T[] var0) {
Object[] var1 = (T[])(new Object[var0.length]);
System.arraycopy(var0, 0, var1, 0, var0.length);
class="kw">return var1;
}
class="kw">public class="kw">static <T> void copy(@Nonnull T[] var0, @Nonnull T[] var1) {
if (var0.length != var1.length) {
throw new IllegalArgumentException("arrays must have the same size");
}
System.arraycopy(var0, 0, var1, 0, var0.length);
}
@Nonnull
class="kw">public class="kw">static <T> T[] append(@Nonnull T[] var0, T var1) {
Object[] var2 = (T[])(new Object[var0.length + 1]);
System.arraycopy(var0, 0, var2, 0, var0.length);
var2[var0.length] = var1;
class="kw">return var2;
}
@Nonnull
class="kw">public class="kw">static <T> List<List<T>> split(@Nonnull List<T> var0, int var1) {
if (var1 < 1) {
throw new IllegalArgumentException("parts must be greater than 0");
}
if (var1 == 1) {
class="kw">return Collections.singletonList(var0);
}
List var2 = new ArrayList<>(var1);
int var3 = var0.size();
if (var3 <= var1) {
for (int var10 = 0; var10 < var3; var10++) {
var2.add(List.of(var0.get(var10)));
}
for (int var11 = var3; var11 < var1; var11++) {
var2.add(List.of());
}
class="kw">return Collections.unmodifiableList(var2);
} else {
int[] var4 = getPartSizes(var3, var1);
int var5 = 0;
for (int var6 = 0; var6 < var1; var6++) {
int var7 = var4[var6];
List var8 = new ArrayList<>(var7);
for (int var9 = 0; var9 < var7; var9++) {
var8.add(var0.get(var5++));
}
var2.add(var8);
}
class="kw">return Collections.unmodifiableList(var2);
}
}
class="kw">public class="kw">static int[] getPartSizes(int var0, int var1) {
if (var0 >= 0 && var1 >= 1) {
if (var0 == 0) {
class="kw">return new int[]{var0};
}
int[] var2 = new int[var1];
int var3 = var0 / var1;
int var4 = var0 % var1;
for (int var5 = 0; var5 < var1; var5++) {
if (var5 < var4) {
var2[var5] = var3 + 1;
} else {
var2[var5] = var3;
}
}
class="kw">return var2;
} else {
throw new IllegalArgumentException("total and/or parts must be greater than 0");
}
}
class="kw">public class="kw">static <T, G> int sortedSearch(@Nonnull List<T> var0, @Nonnull G var1, @Nonnull BiFunction<G, T, Integer> var2) {
int var3 = 250;
if (var0.isEmpty()) {
class="kw">return -1;
}
if (var0.size() == 1) {
class="kw">return var2.apply(var1, var0.getFirst()) == 0 ? 0 : -1;
}
if (var0.size() <= 250) {
for (int var4 = 0; var4 < var0.size(); var4++) {
if (var2.apply(var1, var0.get(var4)) == 0) {
class="kw">return var4;
}
}
class="kw">return -1;
} else {
class="kw">return binarySearch(var0, var1, var2);
}
}
class="kw">public class="kw">static <T, G> int binarySearch(@Nonnull List<T> var0, @Nonnull G var1, @Nonnull BiFunction<G, T, Integer> var2) {
if (var0.isEmpty()) {
class="kw">return -1;
}
int var3 = 0;
int var4 = var0.size();
while (true) {
int var5 = (var4 + var3) / 2;
Object var6 = var0.get(var5);
int var7 = var2.apply(var1, var6);
if (var7 == 0) {
class="kw">return var5;
}
if (var3 == var4 - 1) {
class="kw">return -1;
}
if (var7 == -1) {
var4 = var5;
}
if (var7 == 1) {
var3 = var5;
}
}
}
}