web-dev-qa-db-fra.com

Comment trouver l'index du tableau STRING en Java à partir d'une valeur donnée?

Je voulais savoir s'il existe une méthode native dans array pour Java afin d'obtenir l'index de la table pour une valeur donnée?

Disons que ma table contient ces chaînes: 

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

Supposons que l'utilisateur doit entrer le type de voiture et que, en arrière-plan, le programme prenne cette chaîne et récupère sa position dans le tableau.

Donc, si la personne entre: SedanIl devrait prendre la position 0 et la stocker dans l'objet de Voitures créé par mon programme ...

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

Après cette index est l'index de tableau de votre voiture, ou -1 s'il n'existe pas.

25
Anubian Noob

Tapez:

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

Vous pouvez le faire aussi:

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

J'ai eu un tableau de tous les mots anglais. Mon tableau contient des objets uniques. Mais en utilisant…

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

… M'a toujours donné indexOutOfBoundException.

Alors j'ai essayé:

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

Et ça a marché. Si vos tableaux n'ont pas deux fois le même élément, vous pouvez utiliser:

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

essayez ceci à la place

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

Utilisez Arrays class pour le faire

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

Aucune méthode intégrée. Mais vous pouvez facilement en implémenter un:

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

Il n'y a pas de méthode indexof native dans les tableaux Java. Vous devrez écrire votre propre méthode pour cela.

2
abhishek58g

Essayez cette fonction:

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

Testable interafce mockable

public interface IArrayUtility<T> {

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

}

la mise en oeuvre

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

}

Tester

@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

Utilisez ceci comme une méthode avec x étant initialement un nombre quelconque . La chaîne y étant transmise par la console et v est le tableau à rechercher!

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

Un moyen facile serait de parcourir les éléments du tableau dans une boucle. 

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

Il y aurait certainement de meilleures façons, mais pour un petit nombre d'articles, cela devrait être rapide. Btw c'est du javascript mais la même méthode devrait fonctionner dans presque tous les langages de programmation.

0
R.W