Size: a a a

2020 August 12

GV

Gukov Viktor in learn.java
Dmitriy Shilnikov
Нет, не происходит
Да, я ошибся. Сдвиг всегда происходит в том же самом массиве.
источник

DS

Dmitriy Shilnikov in learn.java
Gukov Viktor
Да, я ошибся. Сдвиг всегда происходит в том же самом массиве.
А если последний элемент удалять, то даже сдвига не будет происходить.
источник

em

ek man in learn.java
Dmitriy Shilnikov
А если последний элемент удалять, то даже сдвига не будет происходить.
я делаю add() миллион раз
выделяется место под миллион ссылок на объекты?
источник

БТ

Бекмамбет Трахтенбер... in learn.java
больше
источник

DS

Dmitriy Shilnikov in learn.java
ek man
я делаю add() миллион раз
выделяется место под миллион ссылок на объекты?
Даже больше, чем под миллион, скорее-всего. Оно с запасом выделяет, чтобы каждый раз не выделять.
источник

БТ

Бекмамбет Трахтенбер... in learn.java
прочитай как работает динамический массив
источник

DS

Dmitriy Shilnikov in learn.java
Иначе каждое добавление приводило бы к копированию всего массива.
источник

GV

Gukov Viktor in learn.java
Dmitriy Shilnikov
А если последний элемент удалять, то даже сдвига не будет происходить.
В таком случае trimToSize() судя по внутренней реализации как раз создает новый массив с нужной длиной
источник

DS

Dmitriy Shilnikov in learn.java
Если ты собираешься миллион записей добавлять, то лучше сразу при создании массива выделять нужный размер.
источник

em

ek man in learn.java
Dmitriy Shilnikov
Если ты собираешься миллион записей добавлять, то лучше сразу при создании массива выделять нужный размер.
нуб может осилить исходник эррэй листа?
источник

DS

Dmitriy Shilnikov in learn.java
ek man
нуб может осилить исходник эррэй листа?
Да, он очень простой. Одна из самых простых коллекций.
trimToSize создаёт новый массив нужной длины.
источник

em

ek man in learn.java
а чтобы смотреть что происходит
жаву можно например в АСМ перевести?
источник

em

ek man in learn.java
или надо гдето про эту жава машину читать?
источник

A

Anton in learn.java
ek man
если сделать array list, который хранит объекты типа Kek
запушить первый объект в array list
получается array list хранит переменную, в которой ссылка на объект Кек?
если да, то после того как мы вызываем метод для удаления элемента array листа, как этот array list удаляет обычную (ссылочную) переменную?
> если сделать array list, который хранит объекты типа Kek
запушить первый объект в array list
получается array list хранит переменную, в которой ссылка на объект Кек?

Получится, что элемент-контейнер внутри реализации Arraist содержит ссылку на объект типа Kek. В случае ArrayList элементом-контейнером выступает ячейка мксмива (например, внутри реализации LinkedList элементом-контейнером будет обьект статического вдоженного класса Node)

> если да, то после того как мы вызываем метод для удаления элемента array листа, как этот array list удаляет обычную (ссылочную) переменную?

В терминологии выше, элементу-контейнеру ArrayList присвоится null, т.е. элементу массива.
(в случае LinkedList, при удалении обьекта, удаляется и сам элемент-контейнер Node)
ArrayList при вставке динамически увеличивает внутренний массив, при необходимости. При удалении элементов, веутренний массив не уменьшается, память останется занятой.
источник

DS

Dmitriy Shilnikov in learn.java
ek man
а чтобы смотреть что происходит
жаву можно например в АСМ перевести?
Ты отладчиком посмотри вначале чего происходит )
источник

A

Anton in learn.java
ek man
нуб может осилить исходник эррэй листа?
В два счета
источник

em

ek man in learn.java
Anton
> если сделать array list, который хранит объекты типа Kek
запушить первый объект в array list
получается array list хранит переменную, в которой ссылка на объект Кек?

Получится, что элемент-контейнер внутри реализации Arraist содержит ссылку на объект типа Kek. В случае ArrayList элементом-контейнером выступает ячейка мксмива (например, внутри реализации LinkedList элементом-контейнером будет обьект статического вдоженного класса Node)

> если да, то после того как мы вызываем метод для удаления элемента array листа, как этот array list удаляет обычную (ссылочную) переменную?

В терминологии выше, элементу-контейнеру ArrayList присвоится null, т.е. элементу массива.
(в случае LinkedList, при удалении обьекта, удаляется и сам элемент-контейнер Node)
ArrayList при вставке динамически увеличивает внутренний массив, при необходимости. При удалении элементов, веутренний массив не уменьшается, память останется занятой.
При удалении элементов, веутренний массив не уменьшается, память останется занятой.

а почему нельзя эту память как-то использовать? или типа памяти много, можно эту в покое оставить
источник

DS

Dmitriy Shilnikov in learn.java
ek man
При удалении элементов, веутренний массив не уменьшается, память останется занятой.

а почему нельзя эту память как-то использовать? или типа памяти много, можно эту в покое оставить
Потому что в джаве нельзя изменить размер массива после его создания.
источник

em

ek man in learn.java
лан я не буду тупыми вопросами задалбливать вас, почитаю попозже про внутренее строение массивов
источник

АD

Алекандр Dontsov... in learn.java
Ребят, привет) Возникла ошибка, не понимаю как исправить, сталкивались с такой ошибкой?
org.springframework.orm.jpa.JpaSystemException: More than one row with the given identifier was found: 38614, for class: ru.fabit.offence.lawn.model.Decree; nested exception is org.hibernate.HibernateException: More than one row with the given identifier was found: 38614, for class: ru.fabit.offence.lawn.model.Decree
       at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:333) ~[spring-orm-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244) ~[spring-orm-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:503) ~[spring-orm-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59) ~[spring-tx-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:209) ~[spring-tx-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147) ~[spring-tx-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) ~[spring-data-jpa-1.11.9.RELEASE.jar!/:na]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57) ~[spring-data-commons-1.13.9.RELEASE.jar!/:na]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.13.RELEASE.jar!/:4.3.13.RELEASE]
       at com.sun.proxy.$Proxy208.save(Unknown Source) ~[na:na]
       at ru.fabit.offence.lawn.service.impl.DecreeService.save(DecreeService.java:277) [classes!/:1.6.0]
источник