Saltar al contenido

¿Cómo contar elementos duplicados en ArrayList?

Tenemos la mejor solución que encontramos on line. Nosotros esperamos que te sea útil y si deseas aportar cualquier detalle que nos pueda ayudar a crecer hazlo con total libertad.

Solución:

List list = new ArrayList();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("a");
    list.add("a");
    list.add("a");

int countA=Collections.frequency(list, "a");
int countB=Collections.frequency(list, "b");
int countC=Collections.frequency(list, "c");

usar Collections.frequency método para contar los duplicados

La cuestión es contar cuántos unos, dos y tres hay en un array. En Java 7 la solución es:

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class howMany1 
public static void main(String[] args) 

    List list = Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765);

    Map map = new HashMap<>();

      for(  Integer r  : list) 
          if(  map.containsKey(r)   ) 
                 map.put(r, map.get(r) + 1);
          //if
          else 
              map.put(r, 1);
          
      //for

      //iterate

      Set< Map.Entry > entrySet = map.entrySet();
      for(    Map.Entry  entry : entrySet     ) 
          System.out.printf(   "%s : %d %n "    , entry.getKey(),entry.getValue()  );
      //for


En Java 8, la solución al problema es:

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class howMany2 
public static void main(String[] args) 

    List list = Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765);
     // we can also use Function.identity() instead of c->c
    Map map = list.stream()
            .collect(  Collectors.groupingBy(c ->c , Collectors.counting())         ) ;


    map.forEach(   (k , v ) -> System.out.println( k + " : "+ v )                    );


Otro método es usar Collections.frequency. La solucion es:

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Duplicates1 
public static void main(String[] args) 

    List list = Arrays.asList(1, 1, 2, 3, 5, 8, 13,13, 21, 34, 55, 89, 144, 233);

    System.out.println("Count all with frequency");
    Set set = new HashSet(list);
    for (Integer r : set) 
        System.out.println(r + ": " + Collections.frequency(list, r));
    


Otro método es cambiar el int array a la lista de enteros usando el método => Arrays.stream(array).boxed().collect(Collectors.toList()) y luego obtenga el número entero usando for loop.

public class t7 
    public static void main(String[] args) 
        int[] a =  1, 1, 2, 3, 5, 8, 13, 13 ;
        List list = Arrays.stream(a).boxed().collect(Collectors.toList());

        for (Integer ch : list) 
            System.out.println(ch + " :  " + Collections.frequency(list, ch));
        

    // main

Acuérdate de que puedes optar por la opción de valorar este ensayo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *