Не так давно я считал. что нет оправдания использованию java.util.LinkedList
в качестве реализации java.util.List
. Но что-то заставило меня его поискать. Давайте разберемся. Любой грамотный Java-специалист знает, что java.util.ArrayList
нужно использовать тогда, когда нам нужен быстрый доступ по индексу, а java.util.LinkedList
, если нам нужно вставлять или удалять элементы в середине списка. Не многие из них догадываются, что если мы будем вставлять или удалять элементы в середине списка методами remove(int index)
и add(int index, E element)
, то на поиск нужного элемента будет затрачено время в среднем пропорциональное размеру списка O(N)
. Так когда же возникает выгода от использования java.util.LinkedList
?
Читать полностью »
Метка «list»
DoubleArrayList — универсальная реализация java.util.List
2013-02-03 в 17:18, admin, рубрики: collections, java, list, Алгоритмы, метки: collections, java, listНакладные расходы памяти у коллекций
2012-12-04 в 4:20, admin, рубрики: java, list, коллекции, память, Программирование, метки: list, коллекции, память, Программирование, сеть Мне было интересно, какие коллекции сколько съедают дополнительной памяти при хранении объектов. Я провёл замеры накладных расходов для популярных коллекций, предполагающих хранение однотипных элементов (то есть списки и множества) и свёл результаты на общий график. Вот картинка для 64-битной Hotspot JVM (Java 1.6):
Читать полностью »
Unrolled linked list на Java
2012-08-20 в 17:43, admin, рубрики: algorithms, data structures, java, list, Алгоритмы, Песочница, метки: algorithms, data structures, java, listВсем привет.
Время от времени я, как и большинство программистов, изучаю какие-то новые структуры и алгоритмы.
В этот раз мне на глаза попались статью по cache oblivious алгоритмы, то есть такие алгоритмы, которые изначально более оптимизированы для работы с подсистемой кэширования современных процессоров.
Одним из представителей этой группы является Unrolled linked list.
Что же это такое?
Читать полностью »
Неприятная особенность std::list, о которой не все знают
2012-08-10 в 10:17, admin, рубрики: c++, list, stl, wtf, С++, метки: list, stl, wtf, С++Односвзязный список — это фундаментальная структура данных, о которой все знают и повсеместно используют. Все знают почему и в каких случаях он эффективнее вектора, какие операции имеют линейную сложность, а какие — константную…
Хотя постойте, знаете ли вы какова соложность функции size ()?
«Конечно же я знаю — О(1)!», ответят многие из вас, «Что может быть проще?»
size_type size() const
{
return _size;
}
Тривиально, эффективно и безопасно, не так ли?
Я бы реализовал эту функцию именно так, большинство из вас сделали бы тоже самое.
Однако, те, кто писал реализацию GNU STL, другого мнения на этот счет.
Читать полностью »
Unity — выбираем, какой массив использовать
2012-04-17 в 21:46, admin, рубрики: list, unity, unity3d, массивы, Программирование, разработка, метки: list, unity, unity3d, массивыДля тех, кто сталкивался с Unity, — не секрет, что эта платформа предоставляет большое количество разнообразных массивов — аж 5 штук (для JS и того больше — 6!). Так что же выбрать и как не запутаться в этом многообразии?
Начну — с конца. Сразу же приведу данные собранные в табличку.
Нетипизованный | Типизованный | |
Доступ по индексу, фиксированная длина |
- | встроенный массив (built-in array) |
Доступ по индексу, динамический размер |
ArrayList или Javascript Array |
List |
Доступ по ключу | Hashtable | Dictionary |
А теперь — давайте поговорим о каждом в отдельности…
Читать полностью »