Задача следующая, необходимо отсортировать слова в тексте по убыванию количества вхождений заданного символа, а в случае равенства - по алфавиту. Как можно дописать компаратор, что бы те слова, где нет заданного символа вовсе либо количество вхождений одинаково, сортировались по алфавиту? Вот что имею на данный момент:
Код | 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; } } }
|
|