Я хотел бы отсортировать список объектов. Каждый объект имеет имущество year
и недвижимость name
. Список Java должен быть отсортирован.Как отсортировать список по времени и подобию?
Класс:
public class Record {
String name;
int year;
}
В качестве примера, предположим, что мы имеем следующие записи (уже заказанные атрибутом года):
объектов/записей:
2000 Paul
2000 Peter
2000 paul
2001 Paul P.
2001 micael
2001 jessica
2002 Michael
Поскольку в течение одного года существует несколько записей, я хочу сортировать по имени, чтобы si Милярные имена появляются как группа. Таким образом, после сортировки, список должен выглядеть следующим образом:
Желаемая Выход:
2000 Peter
2000 Paul
2000 paul
2001 Paul P.
2001 jessica
2001 micael
2002 Michael
jessica < micael
в 2001 году, потому что в 2002 году есть запись Майкл (который соответствует Микаэл с сходством метрики, такие как редактирование расстояние). Кроме того, Paul P. < jessica
, потому что в 2000 году у нас также есть паульские записи. И paul records > Peter
, потому что в 2001 году есть запись Павла П..
Я знаю о показателях сходства, таких как Jaro Winkler, Levenshtein и т. Д., И они также работают как и ожидалось в моем коде. Вопрос заключается в том, как заказать этот список в отношении двух размеров и как осуществить это с компаратора (это возможно даже с помощью простого компаратора?)
Связать ли соответствующий класс с интерфейсом 'Comparable' и включить реализацию сортировки в переопределенном методе compareTo, а затем использовать' Collections # sort' для сортировки списка из них. Этот вопрос задается ежедневно.сначала сделайте небольшое расследование, прежде чем задавать вопрос. – mre
Какова логика, определяющая, что '2000 Peter' указан перед' 2000 Paul'? Без какой-то определенной логики вы можете выразить словами, я не вижу, чтобы это никуда не помогало. –
@AndrewThompson Спасибо, я объяснил это сейчас в первоначальном вопросе. 2000 Питер упоминается до 2000 года, потому что в 2001 году есть также запись Paul P. (которая соответствует Paul, если я использую метрику сходства строк). Таким образом, порядок не является буквенным. Это зависит от следующих/предыдущих записей. – Spiegelritter