package sk.stuba.fiit.perconik.utilities;
import javax.annotation.Nullable;
import static com.google.common.collect.ObjectArrays.newArray;
/**
* Static utility methods for unsorted and preferably small arrays.
* Methods in this class use basic and very simple algorithms for
* array operations. These algorithms perform best on unsorted small
* arrays.
*
* @author Pavol Zbell
* @since 1.0
*/
public final class MoreArrays {
private MoreArrays() {}
public static <T> T[] nullToEmpty(final Class<T> type, @Nullable final T[] array) {
return array == null ? newArray(type, 0) : array;
}
public static <T> T[] emptyToNull(@Nullable final T[] array) {
return isNullOrEmpty(array) ? null : array;
}
public static <T> boolean isNullOrEmpty(@Nullable final T[] array) {
return array == null || array.length == 0;
}
public static boolean contains(final Object[] a, @Nullable final Object key) {
return search(a, key) >= 0;
}
public static int search(final Object[] a, @Nullable final Object key) {
int length = a.length;
for (int i = 0; i < length; i ++) {
Object o = a[i];
if (key == null ? o == null : key.equals(o)) {
return i;
}
}
return -1;
}
public static Object[] wrap(final Object o) {
if (o instanceof Object[]) {
return (Object[]) o;
}
return new Object[] {o};
}
}