Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] IndexOf en ArrayList

Estas en el tema de IndexOf en ArrayList en el foro de Java en Foros del Web. Buen día, Espero puedan ayudarme, no encuentro naa en la red, como puedo hacer una busqueda mas eficiente en un ArrayList. Tengo una clase: Código: ...
  #1 (permalink)  
Antiguo 18/02/2016, 08:23
 
Fecha de Ingreso: febrero-2016
Mensajes: 8
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta IndexOf en ArrayList

Buen día,
Espero puedan ayudarme, no encuentro naa en la red, como puedo hacer una busqueda mas eficiente en un ArrayList.

Tengo una clase:


Código:
class MiClase{
private int id;
private String nombre;

public MiClase(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Entonces declaro un arraylist:


Código:
ArrayList<MiClase> MiLista = new ArrayList<MiClase>();
MiLista.add(new MiClase(1,"javier"));
MiLista.add(new MiClase(2,"carlos"));
MiLista.add(new MiClase(3,"miguel"));
MiLista.add(new MiClase(4,"juan"));
MiLista.add(new MiClase(5,"cesar"));
MiLista.add(new MiClase(6,"alberto"));
y si quiero buscar en el arrraylist por medio de index of y saber la posicion que tega el nombre cesar, o el id 6, saber exactamente en que posicion está por medio de index of, sin usar bucle.

en javascrip puedo hacer eso por medio de:

Aqui por ejemplo yo busco en un array y cada posicion de ese array es un objecto json.

var pos = arrayTecnicos.map(function(e) { return e.IdRegistro; }).indexOf(IdTecnico);

Alguna manera que se pueda usar indexof en arraylist tipo coleccion en Java. Gracias.
  #2 (permalink)  
Antiguo 18/02/2016, 08:34
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: IndexOf en ArrayList

Buenas,

Lo puedes hacer asi:

Código Java:
Ver original
  1. MiLista.stream().filter(o -> o.getNombre().equals("cesar")).findFirst().get().getId();

Resultado: 6

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 18/02/2016, 09:32
 
Fecha de Ingreso: febrero-2016
Mensajes: 8
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: IndexOf en ArrayList

Hola Profesor_Falken
Gracias por su pronta respuesta, porque no me lo reconoce el editor el android studio, tiene algo que ver el java para android studio?



http://subefotos.com/ver/?b79d80e87b42e5699c2bd4b9eaaf04d1o.png
  #4 (permalink)  
Antiguo 18/02/2016, 12:14
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: IndexOf en ArrayList

Buenas,

Es que es codigo Java 8. En ningun lugar habias indicado que estas programando Android.

El codigo de Android esta basado en la especificacion de Java 7, ya que se basa en Apache Harmony (esto va a cambiar pronto ya que va a pasarse al OpenJDK).

En Android la respuesta es NO. No hay forma de hacer esa busqueda sin un bucle.

Si embargo respecto al indexOf, la interfaz list proporciona el metodo get(index), que puede que sirva para lo que quieres.

En tu caso:

Código Java:
Ver original
  1. MiLista.get(idTecnico - 1);


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 18/02/2016, 13:29
 
Fecha de Ingreso: febrero-2016
Mensajes: 8
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: IndexOf en ArrayList

Que tal,
Efectivamente no mencioné de Android, pensé que como era JAVA iba a ser igual pero veo que no es asi, recien estoy aprendiendo Java.

Gracias de todas formas, aunque la verdad no entendi mucho eso que dijiste de (esto va a cambiar pronto ya que va a pasarse al OpenJDK) si podrías explicar algo al respecto te lo agradeceré.
  #6 (permalink)  
Antiguo 19/02/2016, 03:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: IndexOf en ArrayList

http://thenewstack.io/android-n-will...ion-java-apis/

El JDK Java actual de Android no se basa en el de Sun/Oracle sino en la implementacion del proyecto Apache Harmony. Aunque respeta las especificaciones del lenguaje, no tiene el mismo roadmap de versiones que el JDK de Oracle, por lo que no incorpora las novedades de Java 8.

El proyecto Apache Harmony ha tenido historicamente muchos problemas tanto con Sun como con Oracle, ya que en teoria deberia ser una implementation independiente de la oficial pero le acusan de haber hecho copy&paste de muchos de los algoritmos del JDK.

En su momento, cuando Apache Harmony era un proyecto minoritario, no llego la sangre al rio, pero cuando fue utilizado por Google para Android, Oracle le puso un demanda y el litigio lleva ya varios anios en los tribunales: https://en.wikipedia.org/wiki/Oracle...v._Google,_Inc.

Para poder salir de esta espiral y de paso modernizar la sintaxis, Google ha tomado la decision de basarse en su lugar del OpenJDK que es el mismo sirve de base tambien para el JDK que empaqueta Oracle: http://thenewstack.io/android-n-will...ion-java-apis/

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: arraylist, clase, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:25.