La mejor manera de filtrar arraylist de objetos

¿ cual es la mejor forma de filtrar un arraylist de objetos?

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.
Imagen de ezamudio

Así o más vago

Es demasiado vaga tu pregunta. Mejor en qué sentido? menor tiempo? menor uso de memoria? código más elegante? menor cantidad de código? Y de paso podrías definir exactamente qué quieres decir con "filtrar"... yo entiendo que es quedarse solamente con los objetos del arreglo que cumplan con ciertas condiciones, pero podría ser otra cosa... hay que crear un nuevo arreglo solamente con esos objetos, o es solamente eliminar objetos del arreglo existente? Bueno y si dices "arraylist" supongo que es un java.util.ArrayList, o sea una lista (respaldada por un arreglo), no propiamente un arreglo...

Una buena manera (no sé si "la mejor" según tus criterios) es simplemente iterar sobre el arreglo y eliminar los objetos que no necesitas:

 

No puedes hacer directamente   porque no tendrías acceso al objeto iterador para indicarle que quite el elemento actual (y esa es la única manera de poder modificar la lista mientras la recorres, sin que te arroje una ConcurrentModificationException).

Filtrar: hacer pasar algo por

Filtrar: hacer pasar algo por un filtro

Entonces la mejor manera es así:

 

:D

Imagen de Payan

Quizas no me explicado lo

Quizas no me explicado lo mejor que deberia.Cuando me referia a filtrar es si
arraylist de objetos tiene por ejemplo 5 atributos:

 

y cuando me referia a filtrar es a ordenar ascendente o descendente alfabeticamente por cualquiera de
sus atributos por ejemplo si elijo por stock me ordene la lista segun el stock sea mayor o menor una cantidad o
simplemente ordenar ascendentemente.

Imagen de ezamudio

filtrar != ordenar

Filtrar y ordenar son cosas muy distintas.

Y no puedes tener arreglos heterogéneos (o sea de distintas clases, incluso en tu ejemplo, de objetos y tipos nativos: int, String, double). Deben ser de la misma clase. En todo caso tendrías que tener un arreglo de Object, y aplicar autoboxing a los int y double; y cada vez que obtengas un elemento del arreglo, checar de qué clase es para saber qué hacer con él. Pero no veo cómo ordenarías un arreglo heterogéneo para comparar enteros con cadenas (enteros y doubles incluso está a discusión; 5 va antes o después de 5.0?)

A menos que te refieres a arreglos de alguna clase que contiene las propiedades que indicas (codigo, nombreProducto, etc). Entonces lo mejor es que simplemente uses los métodos de la clase Collections, el   por ejemplo con un   (y solamente tienes que implementar distintos comparadores para las propiedades de tu objeto).

Imagen de Payan

ok mirare la clase

ok mirare la clase collections y el comparator ,que creo k va ser lo mejor para lo que quiero xD , Un saludooo