Где Java Array indexOf? - PullRequest
       49

Где Java Array indexOf?

174 голосов
/ 10 февраля 2011

Я, должно быть, упускаю что-то очень очевидное, но я искал все и не могу найти этот метод.

Ответы [ 13 ]

2 голосов
/ 19 октября 2016

В массивах Java нет прямой функции indexOf.

0 голосов
/ 02 декабря 2018

Джеффри Хантин ответ хорош, но у него есть некоторые ограничения, если это делает то или иное ...

Вы можете написать свой собственный метод расширения, и он всегдаработает так, как вы хотите.

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);
    }
}
0 голосов
/ 14 октября 2017
int findIndex(int myElement, int[] someArray){
 int index = 0;
 for(int n: someArray){
   if(myElement == n) return index;
   else index++;
 }
}

Примечание: вы можете использовать этот метод для массивов типа int, вы также можете использовать этот алгоритм для других типов с незначительными изменениями

...