Как вы сказали, и похоже на код, который вы уже написали, вы создадите класс, который реализует интерфейс Comparator для Ticket. Сначала вы сравниваете имена билетов с использованием компаратора String, и если это приводит к 0 (одинаковое имя), вы сравниваете по идентификатору в том же компараторе.
Убедитесь, что компаратор строк выполняет обрезку до (удаляйте до и после пустых пространств) и, возможно, игнорируйте регистр, это ваше дело.
Если вам нужно какое-то обобщение, вы можете написать компаратор декоратора, который вызывает более специфические. Если вы хотите узнать больше об этом, дайте мне знать.