obtener objetos metodos llenar imprimir enteros elemento como clase java for-loop arraylist

java - objetos - ¿Mejor forma de encontrar el índice del artículo en ArrayList?



metodos arraylist java (5)

Para una aplicación de Android, tengo la siguiente funcionalidad

private ArrayList<String> _categories; // eg ["horses","camels"[,etc]] private int getCategoryPos(String category) { for(int i = 0; i < this._categories.size(); ++i) { if(this._categories.get(i) == category) return i; } return -1; }

¿Es esa la "mejor" forma de escribir una función para obtener la posición de un elemento? ¿O hay una función nativa de lujo shmancy en Java que debería aprovechar?


De hecho, hay una función nativa de lujo shmancy en java que debe aprovechar.

ArrayList tiene un método de instancia llamado

indexOf(Object o)

(http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)

Podrías _categories en _categories siguiente manera:

_categories.indexOf("camels")

No tengo experiencia con la programación para Android, pero esto funcionaría para una aplicación Java estándar.

Buena suerte.


La API de Java especifica dos métodos que puede usar: indexOf(Object obj) y lastIndexOf(Object obj) . El primero devuelve el índice del elemento si se encuentra, -1 en caso contrario. El segundo devuelve el último índice, sería como buscar la lista al revés.


Si su List está ordenada y tiene buen acceso aleatorio (como hace ArrayList ), debe buscar en Collections.binarySearch . De lo contrario, debe usar List.indexOf , como han señalado otros.

Pero su algoritmo es sonido, fwiw (aparte de los == otros han señalado).


ArrayList tiene un método indexOf() . Consulte la API para obtener más información, pero así es como funciona:

private ArrayList<String> _categories; // Initialize all this stuff private int getCategoryPos(String category) { return _categories.indexOf(category); }

indexOf() devolverá exactamente lo que devuelve tu método, rápido.


ArrayList<String> alphabetList = new ArrayList<String>(); alphabetList.add("A"); // 0 index alphabetList.add("B"); // 1 index alphabetList.add("C"); // 2 index alphabetList.add("D"); // 3 index alphabetList.add("E"); // 4 index alphabetList.add("F"); // 5 index alphabetList.add("G"); // 6 index alphabetList.add("H"); // 7 index alphabetList.add("I"); // 8 index int position = -1; position = alphabetList.indexOf("H"); if (position == -1) { Log.e(TAG, "Object not found in List"); } else { Log.i(TAG, "" + position); }

Salida: Índice de lista: 7

Si pasa H , devolverá 7 , si pasa J , devolverá -1, ya que definimos el valor predeterminado en -1.

Hecho