Buscar objetos en un ArrayList

Buen día, el presente es para preguntarles cual es forma mas recomendada para hacer lo anterior, tengo una clase Persona, y creo un ArrayList con 20 objetos, los cuales tienen como los siguientes atributos, nombre, apellido, edad, y ahora lo que quiero es crear un método   el cual recibe un String y regresa un String con todas las personas que coinciden con el parámetro de entrada,

antes de venir aquí encontré varios métodos los cuales aparentemente funcionan, pero me gustaría saber cual es la manera mas optima.

Gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Tu método debería de regresar

Tu método debería de regresar una lista de personas no? Si regresas un String con las personas que coinciden, suponiendo que fueran 3 y el parámetro fuera "Paco" tu salida sería:

 

o_O

Para este caso específico ( buscar en una lista de 20 elementos ) una búsqueda lineal basta

 

Imagen de chicowed

Problemita

Tengo el siguiente problemita, estoy tratando de regresar a todas las personas mayores de edad con lo cual implemento el siguiente metodo

 

Pero nomas me regresa la primera persona mayor de edad :/

Imagen de chicowed

Codigo completo

Muestro el codigo para ver en que puedo estar mal

Clase Persona

 

Clase prueba

 

Clase main

 

No hagas return

Un detalle es que estas haciendo el return, en ese punto apenas encontraste al primero y le dices que se salga de la funcion.
Puedes hacer varias cosas:
Primero quita el return
1. crea un arreglo o un stringbuffer o algo donde puedas guardar los valores que requieres
2. al salir del ciclo verifica el count del objeto que llenaste
si el count es mayor a cero regresa lo que tengas que regresar ( string, el arreglo o lo que necesites.)
si el count es igual a cero regresa tu cadena de que no se encontro nada. (aunque creo que eso no deberia ir ahi si no fuera de la funcion validando lo que regresa pero bueeeee.)

 

Imagen de chicowed

Modificaciones

Que tal mi estimado pedroza, hice las modificaciones pero sigue en lo mismo :/

Esta raro

Pues con tu codigo funciona correctamente, si regresa los mayores de edad. El unico cambio que hice fue comentar la entrada de los apellidos y colonias. Pero con la modificacion en el metodo de personas mayores si los regresa.

Imagen de chicowed

Ese si

Ese si pero el otro no, el buscarPaterno, pero ya lo corregi mil gracias por tomarse su tiempo :)

¿y cual fue la solucion?

¿¿¿¿¿¿a final de cuentas ??????

Imagen de adrianaaae

Me imagino

Me imagino que utilizó la misma información que le habías proporcionado para el método anterior; ya que al encontrar el primer dato
en la lista el ciclo se rompe con el return por lo que si existen demás registros en la lista lo ignorará.

Entonces me imagino que usó lo mismo para el método de búsqueda
 

Imagen de chicowed

Así quedo :)

 

Para concatenar un String en

Para concatenar un String en tiempo de ejecución es mejor utilizar StringBuffer que "+", ya que "+" esta diseñado para actuar en tiempo de compilación
 

Imagen de chicowed

Gracias

Muchas gracias mi estimado lo tomare en cuenta :)

Imagen de SuperSerch

Si estas en Java 8

Puedes usar un stream:

 

Imagen de chicowed

En chino...

Muchas gracias, por ahora ese código se ve en chino para mi xD, pero seguiré avanzando y espero llegar a comprender dicha expresión.

Imagen de ezamudio

WAT?

El   para concatenar Strings se compila a usar un StringBuilder, entonces es lo mismo. No veo cómo podría "actuar en tiempo de compilación".

Re: en chino...

 

No es chino. ¡Es Java 8!

Por cierto, ▼ este libro sí que está en chino para entenderle. :-P

~~~

Se solía evitar usar el

Se solía evitar usar el operador + para concatenar Strings porque antes de Java 5 se creaba una instancia nueva. Ahora tiene el mismo desempeño que el StringBuilder