java - initialize - string[] c#
¿Cómo encontrar el índice de la matriz STRING en Java a partir de un valor dado? (12)
Quería saber si hay un método nativo en matriz para que Java obtenga el índice de la tabla para un valor dado.
Digamos que mi tabla contiene estas cadenas:
public static final String[] TYPES = {
"Sedan",
"Compact",
"Roadster",
"Minivan",
"SUV",
"Convertible",
"Cargo",
"Others"
};
Digamos que el usuario debe ingresar el tipo de automóvil y luego, en segundo plano, el programa toma esa cadena y obtiene su posición en la matriz.
Entonces, si la persona ingresa: Sedan Debería tomar el puesto 0 y almacenarlo en el objeto de Cars creado por mi programa ...
No existe un método de índice nativo en las matrices de Java. Necesitará escribir su propio método para esto.
Prueba esta función:
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
}
Sin método incorporado. Pero puedes implementar uno fácilmente:
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;
}
Tenía una selección de todas las palabras en inglés. Mi matriz tiene elementos únicos. Pero usando ...
Arrays.asList(TYPES).indexOf(myString);
... siempre me dio indexOutOfBoundException
.
Entonces, lo intenté:
Arrays.asList(TYPES).lastIndexOf(myString);
Y funcionó. Si sus matrices no tienen el mismo elemento dos veces, puede usar:
Arrays.asList(TYPES).lastIndexOf(myString);
Testable mockable interafce
public interface IArrayUtility<T> {
int find(T[] list, T item);
}
implementación
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;
}
}
Prueba
@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);
}
Una manera fácil sería iterar sobre los elementos en la matriz en un bucle.
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.
}
Definitivamente habría mejores formas, pero para una pequeña cantidad de artículos esto debería ser extremadamente rápido. Por cierto, esto es javascript pero el mismo método debería funcionar en casi todos los lenguajes de programación.
Use esto como un método con x siendo cualquier número inicialmente. La cadena y que pasa la consola y v es la matriz para buscar!
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;
}
Use la clase Arrays
para hacer esto
Arrays.sort(TYPES);
int index = Arrays.binarySearch(TYPES, "Sedan");
prueba esto en su lugar
org.apache.commons.lang.ArrayUtils.indexOf(array, value);
Arrays.asList(TYPES).indexOf("Sedan")
String carName = // insert code here
int index = -1;
for (int i=0;i<TYPES.length;i++) {
if (TYPES[i].equals(carName)) {
index = i;
break;
}
}
Después de este index
es el índice de matriz de su automóvil, o -1 si no existe.
for (int i = 0; i < Types.length; i++) {
if(TYPES[i].equals(userString)){
return i;
}
}
return -1;//not found
Usted puede hacer esto también:
return Arrays.asList(Types).indexOf(userSTring);