Java ссылки на объекты в массиве - PullRequest
2 голосов
/ 07 января 2011

Есть ли функция, аналогичная indexof(), которая будет искать в строковом массиве (желательно не отсортированном) строку и возвращать ее индекс? (или, может быть, значение ординаты?)

например я пытаюсь:

String[] colours= {"Red", "Orange", "Yellow"};

System.out.println("indexOf(Red) = " +
        colours.indexOf("Red"));

... но безуспешно.

спасибо.

AV

постскриптум это в конечном итоге должно работать в 2d массиве (в случае, если это имеет значение)

Ответы [ 3 ]

5 голосов
/ 07 января 2011
String[] colours= {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};

Arrays.asList(colours).indexOf("Red"); // 0

OR
если порядок не имеет значения, то

Arrays.sort(colours);   
Arrays.binarySearch(colours,"Red");//binary search takes sorted[natural order] array as input
2 голосов
/ 07 января 2011

Для отсортированных массивов вы можете использовать Arrays.binarySearch: http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html

Для несортированных массивов Arrays.asList(array).indexOf("String") подойдет.

Однако этот последний метод не будет очень эффективным, поскольку список будет сканироваться последовательно.

0 голосов
/ 07 января 2011

Честно говоря ...

int findString(String[] stringArray;String match) {
  for (i=0;i<stringArray.length;++i) {
    if (match.equals(stringArray[i]) return i;
  }
}

все будет в порядке.Вы могли бы написать это за меньшее время, чем потребовалось, чтобы задать вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...