it-swarm.com.de

Wie finde ich den Index des STRING-Arrays in Java anhand eines bestimmten Werts?

Ich wollte wissen, ob es in Array eine native Methode für Java gibt, um den Index der Tabelle für einen bestimmten Wert abzurufen?

Nehmen wir an, meine Tabelle enthält folgende Zeichenfolgen: 

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

Nehmen wir an, der Benutzer muss den Fahrzeugtyp eingeben und dann nimmt das Programm im Hintergrund diese Zeichenfolge und erhält seine Position im Array.

Wenn die Person also Folgendes eingibt: SedanEs sollte die Position 0 einnehmen und in dem von meinem Programm erstellten Objekt "Autos" speichern.

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

Danach ist index der Array-Index Ihres Autos oder -1, falls er nicht existiert.

25
Anubian Noob

Eintippen:

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

Sie können das auch tun:

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

Ich hatte eine Reihe aller englischen Wörter. Mein Array enthält eindeutige Elemente. Aber mit ...

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

… Gab mir immer indexOutOfBoundException.

Also habe ich versucht:

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

Und es hat funktioniert. Wenn Ihre Arrays nicht zweimal dasselbe Element haben, können Sie Folgendes verwenden:

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

versuchen Sie es stattdessen

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

Verwenden Sie dazu die Klasse Arrays

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

Keine eingebaute Methode. Sie können jedoch eine einfach implementieren:

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

Es gibt keine native Index-Methode in Java-Arrays. Dazu müssen Sie Ihre eigene Methode schreiben.

2
abhishek58g

Versuchen Sie diese Funktion:

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

Testbares mockbares interafce

public interface IArrayUtility<T> {

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

}

implementierung

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

}

Prüfung

@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

Verwenden Sie diese Methode als Methode, wobei x eine beliebige Zahl ist. Die Zeichenfolge y, die von console übergeben wird, und v ist das zu durchsuchende Array!

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

Eine einfache Möglichkeit wäre, die Elemente im Array in einer Schleife zu durchlaufen. 

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

Es gibt definitiv bessere Möglichkeiten, aber für eine kleine Anzahl von Gegenständen sollte dies schnell gehen. Übrigens ist dies Javascript, aber die gleiche Methode sollte in fast jeder Programmiersprache funktionieren.

0
R.W