es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comparador personalizado para ordenar cadenas basándose en la frecuencia de cada carácter.

Hice un comparador personalizado para ordenar una cadena según la frecuencia de los caracteres en ella.

El código es el siguiente:

public class CustomComparator implements Comparator<character> {
    HashMap<character,integer> map;
    public CustomComparator(String s) {
        this.map = new HashMap<>();
        for(char ch : s.toCharArray()) {
            map.put(ch,map.getOrDefault(ch,0)+1);
        }
    }
    @Override
    public int compare(Character ch1,Character ch2) {
        return map.get(ch2) - map.get(ch1);
    }
}

Arrays.sort(array,new CustomComparator(s));

¿Se supone que array es una matriz de caracteres? ¿El hashmap se llena cada vez que se hace una comparación entre dos caracteres, o se llena una vez y luego se decide el orden según las frecuencias del mapa lleno?</character,integer>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El hashmap se llena solo una vez cuando se crea el objeto CustomComparator utilizando el constructor que toma un parámetro String. Las frecuencias de caracteres en la cadena pasada al constructor se calculan y se almacenan en el hashmap. Estas frecuencias luego se utilizan para comparar caracteres durante el proceso de ordenamiento. El hashmap no se llena de nuevo durante el proceso de ordenamiento.

Comments are closed.