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.
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.
Eintippen:
Arrays.asList(TYPES).indexOf("Sedan");
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);
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);
versuchen Sie es stattdessen
org.Apache.commons.lang.ArrayUtils.indexOf(array, value);
Verwenden Sie dazu die Klasse Arrays
Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
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;
}
Es gibt keine native Index-Methode in Java-Arrays. Dazu müssen Sie Ihre eigene Methode schreiben.
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
}
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);
}
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;
}
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.