Вы должны использовать другую или, по крайней мере, дополнительную структуру данных.
ArrayLists - это просто реализация List, которая дает вам список, который динамически увеличивается.Это не заботится о порядке вставки.
Если вам это нужно, вам лучше обратиться к LinkedHashMap.Конечно, это само по себе не сработает: вы хотите, чтобы два объекта Point с одинаковым содержимым позиции были на самом деле равными .Таким образом, вы можете иметь только один такой пункт на вашей карте.
Это то, что можно сказать, учитывая текущую информацию.Для более подробного руководства вы должны показать нам соответствующие части реализации класса Point
.Например: какие элементы действительно входят в вашу реализацию equals()
?Один этот аспект определяет, как вы должны организовать свои данные.
Ну, одно замечание: если вы добавляете несколько «равных» точек в свой список, и вы просто продолжаете добавляя их в конецваш список, то вы можете просто искать с заднего конца.Первая совпадающая точка также является той, которая была добавлена последней.
Редактировать, учитывая реализацию класса Point.По сути, этот класс не имеет смысла. Либо , либо отсутствуют другие атрибуты , либо , но отсутствуют разумные методы equals / hashCode.Значение: если точка действительно является просто списком позиций ... или она должна быть на больше , чем эта.
но если точка содержит только позиции, то это означает: дваточки с равными позициями должны быть равны.Другими словами: класс Point, подобный этому, обязательно должен иметь семантику значений .Точка (0, 1) должна быть равна любой другой точке (0, 1)!