Подтвердить что ты не робот

Как найти индекс массива STRING в Java из заданного значения?

Я хотел знать, есть ли встроенный метод в массиве для Java, чтобы получить индекс таблицы для заданного значения?

Скажем, моя таблица содержит следующие строки:

public static final String[] TYPES = {
        "Sedan",
        "Compact",
        "Roadster",
        "Minivan",
        "SUV",
        "Convertible",
        "Cargo",
        "Others"
    };

Скажем, пользователь должен ввести тип автомобиля, а затем в фоновом режиме программа берет эту строку и получает ее позицию в массиве.

Итак, если человек входит: Седан Он должен занять позицию 0 и сохранить ее в объекте Cars, созданного моей программой...

4b9b3361

Ответ 1

String carName = // insert code here
int index = -1;
for (int i=0;i<TYPES.length;i++) {
    if (TYPES[i].equals(carName)) {
        index = i;
        break;
    }
}

После этого index - это индекс массива вашего автомобиля, или -1, если он не существует.

Ответ 2

Arrays.asList(TYPES).indexOf("Sedan")

Ответ 3

for (int i = 0; i < Types.length; i++) {
    if(TYPES[i].equals(userString)){
        return i;
    }
}
return -1;//not found

Вы также можете сделать это:

return Arrays.asList(Types).indexOf(userSTring);

Ответ 4

Используйте Arrays класс для этого

Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");

Ответ 5

попробуйте это вместо

org.apache.commons.lang.ArrayUtils.indexOf(array, value);

Ответ 6

У меня был массив всех английских слов. Мой массив имеет уникальные элементы. Но используя...

Arrays.asList(TYPES).indexOf(myString);

... всегда давал мне indexOutOfBoundException.

Итак, я попробовал:

Arrays.asList(TYPES).lastIndexOf(myString);

И это сработало. Если ваши массивы не имеют одного и того же элемента дважды, вы можете использовать:

Arrays.asList(TYPES).lastIndexOf(myString);

Ответ 7

Попробуйте эту функцию:

public int indexOfArray(String input){
     for(int i=0;i<TYPES,length();i++)
       {
         if(TYPES[i].equals(input))
         {
          return i ;
         }
        }
      return -1     // if the text not found the function return -1
      }

Ответ 8

В java-массивах нет встроенного метода index. Для этого вам нужно написать свой собственный метод.

Ответ 9

Легким способом было бы перебрать элементы в массиве в цикле.

for (var i = 0; i < arrayLength; i++) {
 // (string) Compare the given string with myArray[i]
 // if it matches store/save i and exit the loop.
}

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

Ответ 10

Испытываемый макетируемый интерфейс

public interface IArrayUtility<T> {

    int find(T[] list, T item);

}

реализация

public class ArrayUtility<T> implements IArrayUtility<T> {

    @Override
    public int find(T[] array, T search) {
        if(array == null || array.length == 0 || search == null) {
            return -1;
        }

        int position = 0;

        for(T item : array) {

            if(item.equals(search)) {
                return position;
            } else {
                ++position;
            }
        }

        return -1;
    }

}

Тест

@Test
public void testArrayUtilityFindForExistentItemReturnsPosition() {
    // Arrange
    String search = "bus";
    String[] array = {"car", search, "motorbike"};

    // Act
    int position = arrayUtility.find(array, search);

    // Assert
    Assert.assertEquals(position, 1);
}

Ответ 11

Используйте это как метод, когда изначально было х. Строка y, передаваемая консолью и v, представляет собой массив для поиска!

public static int getIndex(int x, String y, String[]v){
    for(int m = 0; m < v.length; m++){
        if (v[m].equalsIgnoreCase(y)){
            x = m;
        }
    }
    return x;
}

Ответ 12

Нет встроенного метода. Но вы можете легко реализовать его:

public static int getIndexOf(String[] strings, String item) {
    for (int i = 0; i < strings.length; i++) {
        if (item.equals(strings[i])) return i;
    }
    return -1;
}