¿Cómo puedo eliminar los "los" principales durante una ordenación de Java?

Tengo un androide ListView Me gustaría ordenar. Actualmente estoy usando Collections.sort que alfabetiza muy bien.

Sin embargo, me gustaría dar un paso más y mover el "el" principal. ¿Hay un método Java o Android incorporado que pueda manejar esto?

Si no, ¿cuál es el código que necesitaría?

preguntado el 29 de agosto de 12 a las 15:08

1 Respuestas

Utiliza Collections.sort() con una costumbre Comparator<String> que quita la delantera "The"s antes de comparar cadenas.

List<String> foo = /* init */;

Comparator<String> ignoreLeadingThe = new Comparator<String>() {
    @Override public int compare(String a, String b) {
        // TODO check for nulls?

        // (?i) makes the match case-insensitive
        a = a.replaceAll("(?i)^the\\s+", "");
        b = b.replaceAll("(?i)^the\\s+", "");

        // TODO use compareToIgnoreCase() instead?
        return a.compareTo(b);
    }
};

Collections.sort(foo, ignoreLeadingThe);

Demostración: http://ideone.com/6hogi

Respondido 29 ago 12, 17:08

Probablemente también lo descartaría, pero supongo que eso depende del caso de uso. - David Newton

Gracias, lo comprobaré y volveré en unos minutos para marcarlo como correcto. - elmaestrodelaslechugas

@KickingLettuce En realidad no he probado esto, avíseme si tiene algún problema o si el código no se compila. - pelota mate

También es posible que desee utilizar compareToIgnoreCase en lugar de comapreTo. En la mayoría de los casos, al ordenar alfabéticamente, no desea tener mayúsculas primero y luego minúsculas. robar v

@KickingLettuce Agregué una demostración e hice que el código se compilara. También modifiqué un poco la expresión regular, para que pueda ver este trabajo directamente en su navegador. - pelota mate

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.