style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

La mejor manera de filtrar arraylist de objetos

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

Comentarios

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:

ArrayList<Algo> lista; //Esta es la lista a filtrar
for (Iterator<Algo> iter = lista.iterator(); iter.hasNext();) {
  Algo algo = iter.next();
  if (!cumpleConCriterios(algo)) {
    iter.remove();
  }
}

No puedes hacer directamente for (Algo algo : lista) 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

http://www.wordreference.com/definicion/filtrar

Entonces la mejor manera es así:

List arrayList  = new ArrayList( Arrays.asList("uno", "dos", "tres", "cuatro", "cinco", "seis" ) );
List resultado  = filtraObjetos(  arrayList ); // de la mejor manera...

....
private List filtraObjetos ( List arrayListOriginal ) {
    arrayListOriginal.clear();
    return arrayListOriginal;
}

: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:

 

 int codigo
 String  nombreProducto
 double precio
 int Stock
 int [][] otracosa...

 

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 sort por ejemplo con un Comparator (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

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">