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 ...
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.
Tapez:
Arrays.asList(TYPES).indexOf("Sedan");
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);
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);
essayez ceci à la place
org.Apache.commons.lang.ArrayUtils.indexOf(array, value);
Utilisez Arrays
class pour le faire
Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
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;
}
Il n'y a pas de méthode indexof native dans les tableaux Java. Vous devrez écrire votre propre méthode pour cela.
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
}
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);
}
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;
}
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.