Java - Ayuda con ArraysLists

 
Vista:
sin imagen de perfil

Ayuda con ArraysLists

Publicado por Sergio (3 intervenciones) el 09/06/2017 11:24:20
Buenas, a ver quien me puede ayudar con esto:
Si tengo un ArrayList array1 con los campos a, b , c

Y un ArrayList array2 con los mismos campos (son instancias de la misma clase...)

Lo que quiero es que uno por uno se recorra el array1 preguntando por el campo "a" y si tambien lo encuentra en el array2, tiene que copiar el valor de b en array2.b.

for (int i = 0; i<=array1.size; i++)

{ for (int j=0; j<=array2.size; j++)

{ if (array1.a == array2.a)

{ array2.b = array1.b }

Esta sería la forma "bruta" de hacerlo, hay algún método para ArrayLists para hacerlo bonito?

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con ArraysLists

Publicado por Jordi (135 intervenciones) el 09/06/2017 12:23:40
Si tienes 10.000 valores en el ArrayList tendrás un buen problema. Tardará mucho en completar el ciclo. Te recomiendo mirarte el algoritmo de búsqueda binario. Puede resultar increíblemente útil para cosas de este tipo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con ArraysLists

Publicado por Claudio (6 intervenciones) el 09/06/2017 14:20:27
Para búsqueda binaria el prerequisito es que el array esté ordenado. Atención a eso...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con ArraysLists

Publicado por Sergio (3 intervenciones) el 09/06/2017 14:53:51
Buenas, por las respuestas que estoy viendo, creo que no me he expresado bien... yo estaba mirando por ejemplo el metodo contains , con el que fácilmente encuentras si en el array2 se encuentra un campo del array1, pero no me dice en que indice lo ha encontrado, sólo dice que está ahí.

Hay búsquedas más eficientes que ir indice a indice con dos for, seguro, pero yo me refería a un método propio del objeto ArrayList como contains, que me señale la localización, o incluso que pueda reemplazar todas las concurrencias que encuentre, como un replace all en el Word. O me toca hacer búsquedas " a mano",hehe

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con ArraysLists

Publicado por Claudio (6 intervenciones) el 09/06/2017 15:00:01
Podés hacer algo tipo:

1
2
3
4
5
int i = arrayList2.indexOf("loQueBuscas");
while(i >= 0){
    arrayList2.remove(i);
    i = arrayList2.indexOf("loQueBuscas");
}

indexOf te devuelve el índice de la primer ocurrencia en el listado, o -1 si no encuentra nada.
Eso adentro de un forEach por cada cosa que busques del array1.

Creo que te serviría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar