En un programa Java, tengo una lista de beans que deseo filtrar en función de una propiedad específica.Filtrar una lista de JavaBeans con Google Guava
Por ejemplo, supongo que tengo una lista de Persona, un JavaBean, donde Person tiene muchas propiedades, entre ellas 'nombre'.
También tengo una lista de nombres.
Ahora quiero encontrar todas las personas cuyo nombre está en la lista de nombres.
¿Cuál es la mejor manera de ejecutar este filtro con Google Guava?
Hasta ahora, he pensado en combinar guayaba con beanutils Apache, pero eso no parece elegante.
También encontré una biblioteca de extensiones de reflexión aquí: http://code.google.com/p/guava-reflection/, pero no estoy seguro de cómo usarla (hay poca documentación).
¿Alguna idea?
p.s. ¿Puedes decir que realmente extraño la comprensión de la lista de Python?
La principal diferencia entre esta solución y la mía es que esta solución crea una nueva lista que contiene las personas filtradas, mientras que la mía crea una vista sobre la lista original. Si uno u otro es preferible depende del caso de uso. –
Sí, depende del caso de uso, pero diría que en el 90% de los casos de uso, las mejoras de legibilidad superan los pequeños beneficios de rendimiento. –
Pareces pensar que las dos únicas áreas de compromiso son la legibilidad y el rendimiento. La corrección es mucho más importante que la (supuesta) legibilidad y el rendimiento. Si lo hace de esta manera, no solo debe probar su lógica de predicado, sino también su lógica de filtrado. Se duplicó innecesariamente (al menos, debido al estado mutable introducido) la cantidad de cosas que pueden salir mal. Multiplica esto por la cantidad de veces que filtras en una base de código ... ¿por qué querrías trabajar de esta manera? –