Size: a a a

2020 July 09

AM

Aleksander Melnichni... in pro.jvm
для всех случаев
источник

AM

Aleksander Melnichni... in pro.jvm
Просто кажется, что это метод и был сделан для того, чтобы в 99 и 99 процентов случаев вставлять именно в середину. Нужно в конец юзай add
источник

MO

Max Olsson in pro.jvm
Aleksander Melnichnikov
Но кмк, так не сделано, потому, что это эджкейс, и он редок. А вставлять лишнюю проверку - это деграднет весь перфоманс этого метода(но улучшит для эджкейса)
Ну добавлять в конец по индексу в прицнипе странно, поэтому отсутствие этой проверки вполне логично
источник

ВБ

Вениамин Белоусов... in pro.jvm
Предположим у нас обычный массив в 10 элементов. После вызова add (когда он заполнен) мы получаем 16 элементов. (Теперь у нас есть место на 5 элементов) После этого мы можем сделать 5 вставок в центр без копирования. Это точно редкий кейс?
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Предположим у нас обычный массив в 10 элементов. После вызова add (когда он заполнен) мы получаем 16 элементов. (Теперь у нас есть место на 5 элементов) После этого мы можем сделать 5 вставок в центр без копирования. Это точно редкий кейс?
Как ты сделаешь 5 вставок в центр без копирования? У тебя нет такого API
источник

AM

Aleksander Melnichni... in pro.jvm
Ты вызовешь 5 раз add(idx, elem)
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Как ты сделаешь 5 вставок в центр без копирования? У тебя нет такого API
Это теоретический вопрос)
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Это теоретический вопрос)
Теоретически да это быстрее будет - пиши свою реализацию с батч вставкой
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Предположим у нас обычный массив в 10 элементов. После вызова add (когда он заполнен) мы получаем 16 элементов. (Теперь у нас есть место на 5 элементов) После этого мы можем сделать 5 вставок в центр без копирования. Это точно редкий кейс?
Но даже в этом случае это не 5 вставок в центр, это пять вставок в конец.
источник

ВБ

Вениамин Белоусов... in pro.jvm
Цель понять почему это работает так, как работает. Случаев вставки в массив по индексу с не пустым массивом вроде больше получается
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Но даже в этом случае это не 5 вставок в центр, это пять вставок в конец.
Аааа
источник

MO

Max Olsson in pro.jvm
Aleksander Melnichnikov
Теоретически да это быстрее будет - пиши свою реализацию с батч вставкой
Такой метод в ArrayList уже есть
источник

ВБ

Вениамин Белоусов... in pro.jvm
Понял)
источник

AM

Aleksander Melnichni... in pro.jvm
Max Olsson
Такой метод в ArrayList уже есть
да addAll
источник

OC

Oleg Chirukhin ☄️🧙‍♂... in pro.jvm
Aleksander Melnichnikov
Не открывал еще статью, но звучит как расплавленный планшет =)) хотя видел как работают в ней на Linux on DEX на смартфоне самсунговском, жаль проект закрыли. Ну и да - спасибо за статью. Твои статьи реально радуют.
А вот и фиг тебе. Не будет расплавленного планшета!
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Предположим у нас обычный массив в 10 элементов. После вызова add (когда он заполнен) мы получаем 16 элементов. (Теперь у нас есть место на 5 элементов) После этого мы можем сделать 5 вставок в центр без копирования. Это точно редкий кейс?
Смотри addAll(idx, list)
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Но даже в этом случае это не 5 вставок в центр, это пять вставок в конец.
Хотя стоп, мы же можем вставлять в центр, а место свободное может быть
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Смотри addAll(idx, list)
Не в цикле, просто по процессу работы с массивом
источник

AM

Aleksander Melnichni... in pro.jvm
Вениамин Белоусов
Хотя стоп, мы же можем вставлять в центр, а место свободное может быть
Как это может быть. У тебя не разряженный массив в arrayList
источник

ВБ

Вениамин Белоусов... in pro.jvm
Aleksander Melnichnikov
Как это может быть. У тебя не разряженный массив в arrayList
Почему мы тогда увеличиваем емкость не на один элемент вот тут old Capacity * 3) / 2 ? Я не спорю, просто понять пытаюсь
источник