Вопрос в следующем- я обманул валидатор.
(Весь код дам в конце в комментарии).
кратко система кода->
-посчитать размер и прогнать через for(){} P.S-> здесь использую isNumber
-если номер- считать номер итерации ( который такой же как и порядковый номер ибо число должно потом стоять на месте числа а слово на месте слова)
-добавить это в свежий map(Integer, String) где ключ- номер итерации, значение - номер (который ввели как String).
-если слово -> предыдущий пункт только в другой map.
-Числа -> Создать ArrayList (Integer) для значений -> Integer.ParseInt. значений из Map -> заполнить числовой arrayList- > Collections.sort(arraylist, reverseOrder().
-Слова-> Создать ArrayList (String) для значений -> заполнить arrayList значениями из map- >Если список не пустой ->
И вот тут у меня вопрос. Я не понимаю, как написать код с помощью функции метода isGreaterThan чтобы отсортировать Весь список слов. Поэтому все что я сделал это
Collections.sort(unsortedStringList);
if (isGreaterThan(unsortedStringList.get(0), unsortedStringList.get(1))) {
System.out.println("tricked ya");
} else {
for (int i = 0; i < unsortedStringList.size(); i++) {
sortedStringList.add(i, unsortedStringList.get(i));
}
}
То есть сначала при помощи коллекций отсортировал а потом просто проверил что число на 1 позиции больше чем на второй( что априори будет правильно из-за Collections.sort.....
последний пункт очень простой-
цикл for по размеру array-> для индекса такого то если в Map цифр есть такой ключ- возьми первое значение(.ToString) и добавь его вместо значения в array.-> удали в Map нулевое .
если нет -> то же самое в Map слов.
Итого
Помогите пожалуйста общим советом как этот код сделать "проще и красивее" и примером кода как правильно использовать метод isGreaterThan.
Спасибо