Size: a a a

2020 December 25

TN

Timur Nurmagambetov in Astana JKUG
MrKnyaz
Но операция увеличения настолько редкая что она даже не учитывается в асимптотике
учитывается, просто все равно получается 0(1) для добавления
источник

M

MrKnyaz in Astana JKUG
Timur Nurmagambetov
если не занулить все элементы массива который в arrayliste, то gc не будет их освобождать, даже если для программы они больше не нужны
Это откуда такая инфа?)
источник

TN

Timur Nurmagambetov in Astana JKUG
ну джава там, учебник, gc
источник

TN

Timur Nurmagambetov in Astana JKUG
имеется в виду что ссылку на arraylist храним
источник

M

MrKnyaz in Astana JKUG
Бля
источник

M

MrKnyaz in Astana JKUG
Мы же говорим что выбрать, сделать clear или пересоздать, какие тут утечки?
источник

TN

Timur Nurmagambetov in Astana JKUG
я говорил зачем в стандартной clear выполняется за n
источник

M

MrKnyaz in Astana JKUG
Timur Nurmagambetov
в стандартной нет чтобы не было утечек памяти
Вот это о чём?
источник

M

MrKnyaz in Astana JKUG
Я так понял что ты имел ввиду что в стандартной нет метода очистки пересозданием массива внутри из-за утечек. Поэтому и спросил где там учтечка могла быть
источник

N

N+im+n in Astana JKUG
Timur Nurmagambetov
я говорил зачем в стандартной clear выполняется за n
а сколько у вас элементов в коллекции? что даже clear так критичен
источник

TN

Timur Nurmagambetov in Astana JKUG
по-разному. просто когда нужно выжимать максимум то не обнулять весь массив это быстрее чем обнулять. или создавать новый
источник

TN

Timur Nurmagambetov in Astana JKUG
MrKnyaz
Я так понял что ты имел ввиду что в стандартной нет метода очистки пересозданием массива внутри из-за утечек. Поэтому и спросил где там учтечка могла быть
нет, я не имел это в виду
источник

ES

Eugene Svalukhin in Astana JKUG
У меня тут в голове бешеная идея :)
заводим два Listа, пока один обрабатывается, другой очищается, потом их свапаем
источник

TN

Timur Nurmagambetov in Astana JKUG
а в стандартной библиотеке наверно решили не давать такой низкоуровненый доступ, а сделать попроще, тем более что в подавляющем большинстве случаев этого достаточно. ну тут за авторов трудно говорить
источник

M

MrKnyaz in Astana JKUG
MrKnyaz
Да понятно что у сторонних либ это может быть, странно почему нет в стандартной)
Ну то был ответ на вот это мое сообщение. Почему в стдлиб не добавили трети метод зачитски пересозданием массива внутри за О(1). Поэтому удивился где может быть утечка
источник

ES

Eugene Svalukhin in Astana JKUG
а, у меня вопрос, вы эти списки обрабатываете или как? или просто нужно данные из точки А в точку B доставить?
источник

TN

Timur Nurmagambetov in Astana JKUG
обрабатываю
источник

M

Maksat in Astana JKUG
У меня было так: в List добавлялись элементы из нескольких мест, а потом в одном месте весь List читался и в конце подменялся на новый.
Код многопоточный.

Получалось иногда так, что я добавлял элемент в тот List, который уже был подменён на новый, и элемент терялся.

Понятно что надо было синхронизацию делать, но все же безопаснее делать clear
источник

N

N+im+n in Astana JKUG
Timur Nurmagambetov
по-разному. просто когда нужно выжимать максимум то не обнулять весь массив это быстрее чем обнулять. или создавать новый
померил ArrayList<Integer> clear
кол-во элементов 1_000_000  ~  4 мc
кол-во элементов 10_000_000 ~ 13 мс
кол-во элементов 100_000_000 ~ 70-90 мс
источник

ES

Eugene Svalukhin in Astana JKUG
вариант такой не рассматривали:
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
 T element = iterator.next();
 birdeme, birdeme over element;
 iterator.remove(element);
}

ну типа обработали элемент, сразу его и удаляем из коллекции
источник