Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > CustomComparator


Автор: Firex 29.11.2011, 17:56
Задача следующая, необходимо отсортировать слова в тексте по убыванию количества вхождений заданного символа, а в случае равенства - по алфавиту.
Как можно дописать компаратор, что бы те слова, где нет заданного символа вовсе либо количество вхождений одинаково, сортировались по алфавиту?
Вот что имею на данный момент:
Код

public class WordComparator implements Comparator<String> {
    public int compare(String str1,String str2){ // str1 и str2 - это слова, уже отпарсенные, без пробелов и прочей всячины, только буквы.
        char ch='р'; // это для теста, сюда будет вызываться какой-нибудь метод получания символа
        return compareByLetter(str1,str2,ch);
    }
    public int compareByLetter(String str1,String str2, char ch){
        int i;
        
        int count1=0; // количество вхождений в первое слово
        int count2=0; // количество вхождений во второе слово

        for (i=0;i<str1.length();i++){
            if (str1.toCharArray()[i]==ch){
                count1++;
            }
        }

        for (i=0;i<str2.length();i++){
            if (str2.toCharArray()[i]==ch){
                count2++;
            }
        }

        if (count1!=count2){
            return count2-count1;
        } else { // тут должно быть что-то ещё, что бы сортировка была такая как в задании
            return 0;
        }
        
    }
}

Автор: APXEOLOG 29.11.2011, 18:24
Код

if (count1!=count2){
            return count2-count1;
        } else { // тут должно быть что-то ещё, что бы сортировка была такая как в задании
            return str1.compareTo(str2);
        }


Если я правильно понял то в случае равенства кол-ва букв идет обыкновенная строковая сортировка

Автор: Firex 29.11.2011, 19:36
Спасибо, получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)