add Column#forRanges

This commit is contained in:
dfsek
2022-06-08 19:03:52 -07:00
parent 3d4e2e4263
commit f036bddf9e
2 changed files with 23 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
package com.dfsek.terra.api.util;
import com.dfsek.terra.api.util.function.IntIntObjConsumer;
import com.dfsek.terra.api.util.function.IntObjConsumer;
import com.google.common.collect.ImmutableList;
@@ -28,6 +29,22 @@ public interface Column<T> {
}
}
default void forRanges(IntIntObjConsumer<T> consumer) {
int y = getMinY();
int runningMin = y;
T runningObj = get(runningMin);
do {
y++;
T current = get(y);
if(!current.equals(runningObj)) {
consumer.accept(runningMin, y, runningObj);
runningMin = y;
runningObj = current;
}
} while(y < getMaxY());
}
default List<? extends T> asList() {
List<T> list = new ArrayList<>();
forEach((Consumer<T>) list::add);

View File

@@ -0,0 +1,6 @@
package com.dfsek.terra.api.util.function;
@FunctionalInterface
public interface IntIntObjConsumer<T> {
void accept(int i, int j, T obj);
}