Java - Сортировка массива String по количеству заглавных букв

Есть массив String, нужно отсортировать по возрастанию количества заглавных букв в строках. Как это сделать ? Желательно без компаратора, ибо пока что не понимаю, как им пользоваться.

String [] names = {"DeaaaSaaaAaAAAan", "DeaWeWEaan", "DeaaFDfaaaaaan", "DeWan", "DeaaaaSaan", "DeaSLKDan", "Deaaaaaaaaan",  "Deaaaan", "Deaaaaan"};

Ответы (1 шт):

Автор решения: Tiarait

Если без компаратора это будет сортировка через циклы. Однако оставлю ссылку на сортировку с Comparator

public static void main(String[] args) {
        String [] names = {"DeaaaSaaaAaAAAan", "DeaWeWEaan", "DeaaFDfaaaaaan", "DeWan", "DeaaaaSaan", "DeaSLKDan", "Deaaaaaaaaan",  "Deaaaan", "Deaaaaan"};
    //сортируем
    for (int i = 0; i < names.length; i++) { 
      String temp = "";   
      for (int j = i+1; j < names.length; j++) {  
          //условие сортировки
          if(countUpperCase(names[i]) > countUpperCase(names[j])) { 
             temp = names[i];    
             names[i] = names[j];    
             names[j] = temp;    
           }     
        }     
    } 
    //вывод
    System.out.println("now: " + Arrays.toString(names));
}

//получаем кол-во заглавных букв в тексте 
private static long countUpperCase(String inputString) {
    return inputString.chars().filter((s)->Character.isUpperCase(s)).count();
}

countUpperCase тоже можно сделать через цикл (но зачем)

→ Ссылка