Ести список строк: "Иванов" "Иванкин" "Ивченко" "Лавриенко" "Лавочкин" "Абрамов" "Абдулов" "Акрин" "Циганов"
Их необходимо отсортировать так, что бы начало строки сортировалось по naturalOrder, а оставшаяся часть - в обратном порядке, т.е. отсортированный список должен иметь следующую последовательность: "Акрин" "Абрамов" "Абдулов" "Ивченко" "Иванов" "Иванкин" "Лавриенко" "Лавочкин" "Циганов"
Как я понимаю надо использовать 2 компаратора, но как это реализовать в коде не имею представления.
List<String> strings = Arrays.asList("Иванов", "Иванкин", "Ивченко", "Лавриенко", "Лавочкин", "Абрамов", "Абдулов", "Акрин", "Циганов");
strings.sort((o1, o2) -> {
int firstCharComparison = o1.charAt(0) - o2.charAt(0);
int secondCharComparison = -String.CASE_INSENSITIVE_ORDER.compare(o1.substring(1), o2.substring(1));
return firstCharComparison != 0 ? firstCharComparison : secondCharComparison;
});
System.out.println(strings);
firstCharComparison
- сравнение первых символов
secondCharComparison
- используем компаратор из стандартной java библиотеки который сравнивает строчки после первого символа. перед ним стоит -
так как нам нужен обратный порядок.
Возвращаем по приоритету. Если результат сравнения по первому символу не видит отличий, возвращаем результат по второму. Иначе по первому.
Внимание! Для простоты кода я не включил проверки на null, длину строк и регистр первого символа. Это оставил на вас)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В intelijiIdea я создал простой java проект на MavenВ папке main -> java создал класс Main, где прописал метод System
Есть задача создать файл и проверять есть ли изменения в этом файлеКак это
мне необходимо получить случайный символ из двух вариантов (0 или 1)Сделал я это путем получение рандомного инта (48 или 49), т