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)