У меня есть список объектов с меткой времени, и единственным запросом, который мне нужно выполнить, будет «найти все объекты с временной шкалой больше, чем x». Какая структура данных лучше всего подходит для оптимизации вышеуказанного поиска? Я в порядке с большими временами вставки, но, если возможно, предпочел бы не идти с полной реализацией EPL.Структура данных для хранения списка объектов с меткой времени
ответ
Если вы используете базу данных SQL в приложении где-то, а затем создать индекс для поля метки времени и просто сделать запрос.
В противном случае, если у вас нет базы данных, это выглядит как работа для TreeMap или ConcurrentSkipList. Оба реализуют метод subMap(K, K), headMap(K) и tailMap(K) от NavigableMap interface. Вы можете указать пользовательский заказ для любого SortedMap (и его подинтерфейсов), выполнив интерфейс Comparable в ваших ключах или указав Comparator при создании вашей коллекции. Если вам не нужно отображать значение ключа, вы также можете просто использовать NavigableSet и их реализации TreeSet или ConcurrentSkipListSet.
Вы можете использовать такой код:
//declare an ArrayList of Objects
ArrayList<MyTimestampedObject> list = loadObjects();
//new list to store Objects after condition check
ArrayList<MyTimestampedObject> newList = new ArrayList<MyTimestampedObject>();
//loop through the list
for(MyTimestampedObject tmp:list){
//check condition
if(tmp.getDate()>x){
//do something
newList.add(tmp);
}
}
Благодарим за отзыв. Однако это будет решение O (N). Я ищу что-то более оптимистичное, если возможно – qwerty
Я считаю, что реализация сопоставимого интерфейса намного лучше –
Вы можете использовать любую отсортированный структуру данных, которая позволяет бинарный поиск (если вы не заботитесь о времени введения), и для данного в X
, выполнить поиск (который занимает O(logN)
время), чтобы найти первый объект с timestamp > X
, поскольку структура данных упорядочена, все объекты в структуре данных после этого объекта также имеют timestamp > X
.
Обратите внимание, что если вы хотите вернуться список объектов, из этого запроса, он не может быть сделано лучше, чем O(N)
- вы либо скопировать или удалить O(N)
раз, как количество объектов, которые могут быть извлечены в этот запрос в общем случае равен O(N)
.
Как насчет BST (бинарное дерево поиска? ЗаказовМои дает вам именно то, что вам нужно, с O (LogN).
- 1. Хорошая структура данных для хранения списка
- 2. Структура данных для объектов
- 3. Структура данных для хранения диапазонов
- 4. Структура данных для хранения нескольких тысяч объектов с уникальным индексом
- 5. Наилучшая структура данных для хранения
- 6. структура данных для хранения синонимов
- 7. Структура JSON для списка объектов
- 8. Структура данных для хранения огромного количества данных?
- 9. Какова наилучшая структура данных для хранения объектов, индексированных по дате?
- 10. Структура базы данных для хранения исторических данных
- 11. которой структура данных для списка объектов с функцией быстрого поиска
- 12. Структура данных для хранения времени и дня недели PHP
- 13. Пространственно-эффективная структура данных для хранения списка слов?
- 14. Какая лучшая структура данных используется для хранения большого списка студентов?
- 15. Наиболее эффективная структура данных для хранения алфавитно упорядоченного списка слов
- 16. Структура данных для хранения разреженных матриц
- 17. Структура данных для хранения больших наборов данных
- 18. Структура данных для хранения динамических данных
- 19. Структура данных для хранения данных телефонной книги
- 20. Альтернативная структура данных списка
- 21. Эффективная структура данных для хранения данных с относительным упорядочением
- 22. Потеря времени хранения данных хранения
- 23. Структура данных для объектов с O (1) поиском?
- 24. Какая структура данных используется для хранения абзаца?
- 25. Лучшая структура данных для хранения смежных полигонов?
- 26. Структура данных для уникального хранения ссылок
- 27. структура данных для хранения угловых интервалов
- 28. Структура базы данных для хранения личных навыков
- 29. Лучшая структура данных для часто запрашиваемого списка объектов
- 30. Структура данных для хранения 2-х интервалов
, что является временной меткой объект в вашем приложении? Объект, который содержит поле даты? – MaVRoSCy
Интервал дерево это первое, что приходит на ум. – Justin