Джеффри Хантин ответ хорош, но у него есть некоторые ограничения, если это делает то или иное ...
Вы можете написать свой собственный метод расширения, и он всегдаработает так, как вы хотите.
Lists.indexOf(array, x -> item == x); // compare in the way you want
А вот ваше расширение
public final class Lists {
private Lists() {
}
public static <T> int indexOf(T[] array, Predicate<T> predicate) {
for (int i = 0; i < array.length; i++) {
if (predicate.test(array[i])) return i;
}
return -1;
}
public static <T> int indexOf(List<T> list, Predicate<T> predicate) {
for (int i = 0; i < list.size(); i++) {
if (predicate.test(list.get(i))) return i;
}
return -1;
}
public interface Predicate<T> {
boolean test(T t);
}
}