Foros del Web » Programación para mayores de 30 ;) » Java »

contar las veces que se repite en un arraylist

Estas en el tema de contar las veces que se repite en un arraylist en el foro de Java en Foros del Web. Buenas haber si me podeis ayudar por favor, necesito recuperar las veces que se repite un elemento en un array list pero que solo muestre ...
  #1 (permalink)  
Antiguo 20/03/2013, 03:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Exclamación contar las veces que se repite en un arraylist

Buenas haber si me podeis ayudar por favor, necesito recuperar las veces que se repite un elemento en un array list pero que solo muestre una vez el elemento. lo que tengo es esto
Código Javascript:
Ver original
  1. HttpSession sesion = request.getSession();
  2.          ArrayList<apoyo> detalle  = (ArrayList<apoyo>) sesion.getAttribute("carrito");
  3.          if (detalle!=null){
  4.          
  5.          
  6.           for(int i = 0;i<detalle.size();i++){
  7.               int unidades=0;
  8.              apoyo e = detalle.get(i);
  9.              for (int l = i;l<detalle.size();l++){
  10.              apoyo a = detalle.get(l);
  11.              if(e.getProducto().equals(a.getProducto())){
  12.                id = bd.idproducto(e.getProducto());  
  13.                unidades++;
  14.                        }
  15.              }
  16.            
  17.              int cantidadtotal = detalle.size();
  18.          
  19.          
  20.          String passwordcliente = sesion.getAttribute("pass").toString();
  21.          System.err.println("id "+id);
  22.          System.err.println(passwordcliente);
  23.          System.err.println("ct "+cantidadtotal);
  24.          System.err.println("unidades "+unidades);
  25.          /*bd.añadir(id, passwordcliente, unidades, cantidadtotal);*/
  26.          
  27.          id=0;
  28.          
  29.           }


Con esto me lo cuenta pero me aparece algo asi;
SEVERE: id 4
SEVERE: ana
SEVERE: ct 3
SEVERE: unidades 1
SEVERE: id 16
SEVERE: ana
SEVERE: ct 3
SEVERE: unidades 2
SEVERE: id 16
SEVERE: ana
SEVERE: ct 3
SEVERE: unidades 1

y solo quiero que me salga una vez lo de id 16 con unidades 2.
Gracias
  #2 (permalink)  
Antiguo 20/03/2013, 05:59
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: contar las veces que se repite en un arraylist

Hola hextrem,
te sugiero generar un HashMap, en el cual como clave almacenas objeto apoyo, y como valor un contador. Luego utilizas el HashMap para mostrar los valores y la cantidad que aparecen.

Suerte!
__________________
Hermann D. Schimpf
Visita mis repositorios de:
Clases Java: http://code.google.com/p/javaclassesrepository/
Clases PHP: http://code.google.com/p/phpclassesrepository/
  #3 (permalink)  
Antiguo 21/03/2013, 08:51
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: contar las veces que se repite en un arraylist

Para recorrer sin que te muestre los duplicados, se me ocurre que puedes poner tu ArrayList en una lista Set, de esta manera te cargas los duplicados. La recorres y listo.
  #4 (permalink)  
Antiguo 21/03/2013, 09:28
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: contar las veces que se repite en un arraylist

Si lo quieres hacer como recomienda ElAthlit tienes que volcar todos los elementos en el Set, luego iteras sobre el set pero buscas las repeticiones en tu List.

Con eso te evitas repetir los mensajes.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.