Skip to content

Commit

Permalink
feat(base.collection): methods for finding element in list
Browse files Browse the repository at this point in the history
  • Loading branch information
WakelessSloth56 committed Nov 7, 2022
1 parent 5221271 commit 94863cb
Showing 1 changed file with 29 additions and 6 deletions.
@@ -1,6 +1,7 @@
package org.auioc.mcmod.arnicalib.base.collection;

import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.stream.IntStream;
import org.apache.commons.lang3.Validate;
Expand All @@ -12,6 +13,14 @@ public static <T> T getLast(List<T> list) {
return list.get(list.size() - 1);
}

public static <T> Optional<T> getOptional(List<T> list, int index) {
return (index >= 0 && index < list.size()) ? Optional.ofNullable(list.get(index)) : Optional.empty();
}

public static <T> T getOrDefault(List<T> list, int index, T defaultValue) {
return (index >= 0 && index < list.size()) ? list.get(index) : defaultValue;
}


public static <T> int indexOf(List<T> list, Predicate<T> predicate, int ordinal) {
for (int i = 0, l = list.size(); i < l; ++i) {
Expand Down Expand Up @@ -49,13 +58,27 @@ public <T> int[] allIndexesOf(List<T> list, Predicate<T> predicate) {
}


public static <T> List<T> findAll(List<T> list, Predicate<T> predicate) {
return list.stream().filter(predicate).toList();
}

public static <T> Optional<T> findFirst(List<T> list, Predicate<T> predicate) {
return list.stream().filter(predicate).findFirst();
}

public static <T> Optional<T> findFirst(List<T> list, Predicate<T> predicate, int ordinal) {
return getOptional(list, indexOf(list, predicate, ordinal));
}

public static <T> Optional<T> findLast(List<T> list, Predicate<T> predicate, int ordinal) {
return getOptional(list, lastIndexOf(list, predicate, ordinal));
}


public static <T> boolean add(List<T> list, int index, T element) {
try {
list.add(index, element);
return true;
} catch (IndexOutOfBoundsException e) {
return false;
}
if (index > list.size() || index < 0) return false;
list.add(index, element);
return true;
}

public static <T> boolean addBefore(List<T> list, Predicate<T> refPredicate, T element) {
Expand Down

0 comments on commit 94863cb

Please sign in to comment.