it-swarm.com.ru

Как найти индекс массива STRING в Java по заданному значению?

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

Допустим, моя таблица содержит эти строки: 

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

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

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

39
Cyberflow
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, если он не существует.

25
Anubian Noob

Введите:

Arrays.asList(TYPES).indexOf("Sedan");
138
user3539787
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);
8
mok

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

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

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

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

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

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

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

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

org.Apache.commons.lang.ArrayUtils.indexOf(array, value);
6
Wayne Wang

Используйте класс Arrays, чтобы сделать это

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

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

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;
}
3
Raphael C

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

2
abhishek58g

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

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
      }
1
Alaeddine

Тестируемый макет взаимодействия

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);
}
0
Gary Davies

Используйте это как метод, где x изначально является любым числом . Строка 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;
}
0
mitchell Williamson

Самый простой способ - перебирать элементы в массиве в цикле. 

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.
}

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

0
R.W