В Java у меня есть ArrayList со списком объектов. У каждого объекта есть поле даты, которое является просто длинным типом данных. ArrayList сортируется по полю даты. Я хочу вставить новый объект в ArrayList, чтобы он отображался в правильной позиции относительно его даты. Единственное решение, которое я вижу, это перебрать все элементы и сравнить поле даты объекта, вставляемого в объекты, которые повторяются, а затем вставить его, как только я доберусь до правильной позиции. Это будет проблемой производительности, если мне придется вставить много записей.Самый быстрый способ найти элемент в отсортированном ArrayList
Каковы возможные способы улучшения этой производительности? Может быть, ArrayList не лучшее решение?
Вы можете использовать бинарный поиск, чтобы найти точку вставки. – dsharew
Specifcally, ['Collections.binarySearch()'] (http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#binarySearch (java.util.List,% 20T, % 20java.util.Comparator)). Но нет, ArrayList, скорее всего, не лучшая структура для этого. –
Возможно, вам захочется рассмотреть возможность использования другого типа коллекции, возможно, 'TreeSet' и сделать ваши элементы' Comparable'. Затем вы получаете все из коробки. –