Удалять в примере со слушателями надо не по индексу а по ссылке на объект, будет последовательный перебор пока не найдется equals элемент. Соответсвенно, сам перебор по скорости ~одинаков для ArrayList и LinkedList, а удаление с оптимальным использованием памяти и по времени, очевидно, быстрее в LinkedList.
Были бы структуры данных, применение найдется, никакого лобби нет :)
Какой читерский бенчмарк в пользу ArrayList. ArrayList создан сразу под количество элементов (соответственно вставка быстрая), удаление по индексу из LinkedList, ну тут и говорить не о чем. Тогда уж надо расходы по памяти смотреть, если после каждого remove вы не делаете trim.
Я не спорю, что при данном кейсе (из вашего бенчмарка) выиграет ArrayList, это можно понять даже не заглядывая в таблицу результатов. Просто у каждой структуры есть свои плюсы/минусы, я вот привел пример со списком слушателей, где плюсы связного списка для меня перевешивают плюсы ArrayList.
Естественно в 99% нужно использовать ArrayList в качестве реализации списка, это да. То, что есть куча кода в тысячах проектов где по незнанию всунули LinkedList не означает, что он не нужен в принципе. Просто необходимо огородить его такого опасного использования, это да.
Вставка и удаление работают быстрее в LinkedList, это факт, к тому же после удаления предлагаете каждый раз вызывать trim() у ArrayList, если уж о памяти заботится?
При последовательном чтении (через итератор естественно) производительность будет одинакова, все равно объекты по памяти раскиданы и для массивов (т.к. в них только ссылки, если мы про Java)
А если подписчики постоянно добавляются/убавляются, причем неравномерно :) это, конечно, шутка.
А теперь серьезно. Вы ведь сравнили только по памяти, а как же сложность операций? Добавление элемента может вызвать увеличение ArrayList, а это время (малое конечно т.к. System.arrayCopy() быстрый по максимуму, но все же это время) или наоборот удаление элемента точно приведет к копированию массива.
Я сейчас хочу график где-нибудь найти сравнения по памяти LinkedList и ArrayList, если найдете, поделитесь пожалуйста.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
В общем, мы неплохо поговорили, предлагаю закрыть дискуссию