Комментарии 10
спасибо!
0
спасибо, все удобно структурировано
+1
Спасибо вам! Не далее чем пару месяцев назад устраивался на джуниора, конспектировал в тетради ваши заметки. Помогло, и таки да, устроился.
+2
Вы как-то обмолвились, что LinkedList занимает в 6 раз больше, чем ArrayList.
Я прикинул — в ArrayList на один элемент приходится 1 указатель на объект, то есть 8 байт. В LinkedList — указатель на объект — 8 байт, указатель на следующую ноду — 8 байт, указатель на предыдущую ноду — 8 байт, оверхед на объект с нодой — 16 байт.
То есть получается на 1 объект в ArrayList — 8 байт, а на объект в LinkedList — 40 байт. Разница получается в 5 раз. Что я упустил?
0
Зависит от размера указателя и размера объектов, дело в том что в Java есть такая функция как Compressed Oops, в этом случае и в случае 32 битных систем, указатели занимают только 4 байта, соотвественно объект будет более «тяжелым» по отношению к указателям.
Но тут сильно будет зависит от платформы, версии Java и много другого, в принципе размер объекта точно в стандарте (насколько я знаю) не определен, соотвественно в зависимости от системы может занимать как 16 байт. так и больше (или меньше). В целом, разница будет в 5 — 6 раз (а иногда и больше), 100% точно ответить на этот вопрос нельзя, так размер указателя в Java и размер объектов величины не постоянные.
Поэтому где я писал про размер, я делал оговорку про системы где указатели 4 байтные (из-за 32 битной системы или Compressed Oops).
Но тут сильно будет зависит от платформы, версии Java и много другого, в принципе размер объекта точно в стандарте (насколько я знаю) не определен, соотвественно в зависимости от системы может занимать как 16 байт. так и больше (или меньше). В целом, разница будет в 5 — 6 раз (а иногда и больше), 100% точно ответить на этот вопрос нельзя, так размер указателя в Java и размер объектов величины не постоянные.
Поэтому где я писал про размер, я делал оговорку про системы где указатели 4 байтные (из-за 32 битной системы или Compressed Oops).
+1
Огромное Вам спасибо! Очень удобно и информативно.
+1
Мне всегда казалось, что основным отличием массива(ArrayList) от связанного списка(LinkedList) является алгоритм расположения элементов в памяти. Так для массива элементы идут последовательно, для связанных списков элементы могут размещаться где угодно в памяти. Эти особенности и определяют сценарии использования. Так для чтения элементов по индексу лучше подойдет массив, если в коллекции преобладают операции вставки — связанный список. Стоимость алгоритмов следующая: чтение — массив О(1) против список O(n); вставка — массив О(n) против список O(1); Так что LinkedList бывает полезен не так уж редко.
-1
Небольшой лайфхак — если вы хотите сразу развернуть все спойлеры на странице Хабра,
введите в адресной строке браузера следующий код
Внимание — при копировании этой строки и вставке префикс javascript: часто проглатывается, не забудьте ввести его вручную.
Причины, которые побудили меня на такой ход — мне надо сохранить статью в скрэпбук, а прокликивать все сорок один спойлер довольно утомительно, да и не к лицу кодеру заниматься ручным трудом
введите в адресной строке браузера следующий код
javascript: { Array.prototype.slice.call(document.getElementsByClassName('spoiler_text')).forEach(function(e){e.style.display="block";}); }
Внимание — при копировании этой строки и вставке префикс javascript: часто проглатывается, не забудьте ввести его вручную.
Причины, которые побудили меня на такой ход — мне надо сохранить статью в скрэпбук, а прокликивать все сорок один спойлер довольно утомительно, да и не к лицу кодеру заниматься ручным трудом
+2
Спасибо огромное!
0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений