Нужен алгоритм для этой задачи сортировки! - PullRequest
1 голос
/ 02 июня 2010

012 @ TEST1 524 @ TEST2 ABC @ TEST3 AB @ test4 53 @ test5 @ Test6

Я хочу отсортировать следующие данные так, чтобы Окончательный вывод: Сортировка на основе данных перед "@" Числа должны предшествовать альфа

@ test6 012 @ TEST1 53 @ test5 524 @ TEST2 AB @ test4 ABC @ TEST3

Я хочу реализовать это в Java ... Помогите мне

Ответы [ 2 ]

3 голосов
/ 02 июня 2010
List<String> stringList = Arrays.asList(new String[]{"012@TEST1", "524@TEST2","ABC@TEST3" ,"AB@TEST4" ,"53@TEST5","@TEST6"});

    Collections.sort(stringList,new Comparator<String>(){

        public int compare(String s1,String s2){  
            String c1,c2;
            if (s1.split("@").length >1){c1 = s1.split("@")[0]}else{c1 = ""}
            if (s2.split("@").length >1){c2 = s2.split("@")[0]}else{c2 = ""}
            return c1.compare(c2);
        }
});

Или что-то в этом роде, просто настройте метод сравнения

0 голосов
/ 13 октября 2016

это обычная буквенно-цифровая сортировка словаря, но @ сначала получает приоритет, потому что, к сожалению, в таблице ASCII, @ получил стек между цифрами и большими буквами. как вы можете видеть здесь:

http://www.asciitable.com/index/asciifull.gif

поочередно, вы можете сохранить данные в double-valued nodes, которые содержат данные слева от @ в node1, и данные справа, в node2, и использовать сортировку по словарю в node1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...