powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Final & AtomicInteger
25 сообщений из 32, страница 1 из 2
Final & AtomicInteger
    #40105013
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрю тут видео с SpringDeveloper

Заинтересовал один пример
YouTube Video
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105024
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
Почему на 30 строчке используется AtomicInteger, а не просто int?

имхо в данном примере никакого смысла в нем нет (или скажем осторожнее - лично я его не вижу). Либо автор просто привык делать так из-за более сложных случаев, когда есть какой-то параллелизм (ну например по какой-то безумной причине ему захочется в тестовом примере с фейковыми данными написать parallelStream вместо stream), либо по какой-то эстетической причине ему incrementAndGet нравится больше, чем id++. В последнем случае можно однако поинтересоваться, чем ему List.of().stream нравится больше Stream.of
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105028
-=Koba=-, он просто думает наперед - наверняка потом он напишет POST для добавления элементов в коллекцию. И тогда уже нужен Atomic.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105031
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

Она же финал...
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105032
-=Koba=-, это не запрещает туда добавлять новые элементы. Это запрещает назначать новую коллекцию в тот же указатель customers.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105039
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
это не запрещает туда добавлять новые элементы
это не так

Collectors.toListThere are no guarantees on the type, mutability, serializability, or thread-safety of the List returned

Поэтому есть сомнения в том, на сколько наперед там кто-то думал в обучающем примере и думал ли вовсе.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105055
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=Koba=-
Stanislav Bashkyrtsev,

Она же финал...


нужно срочно почитать что такое примитиы и ссылочные типы данных,как в джава передается и тот и тот тип и потом станет понятно,что к чему

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Main {
    private final static Dog dog=new Dog("Stas");
    private final static String s="AAA";

    public static void main(String[] args) throws InterruptedException {
        System.out.println(dog.getDogtVal());//выведет Stas
        dog.setDogtVal("stas is googler-dev");
        System.out.println(dog.getDogtVal()); //выведет stas is googler-dev
        s="bbb";//тут ошибка компиляции будет


    }}



осознай этот код
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105077
chpasha
Stanislav Bashkyrtsev
это не запрещает туда добавлять новые элементы
это не так
Что не так? Что final не запрещает изменять коллекцию?
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105178
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Что не так? Что final не запрещает изменять коллекцию?

нет, что в коллекцию в примере можно что-то добавлять. но конечно не потому, что там final
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105183
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
List.of()
группа методов утилитных возвращают ImmutableList имплементации
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105189
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начали за здравие, а кончил за упокой

Stanislav Bashkyrtsev
Написал
авторнаверняка потом он напишет POST для добавления элементов в коллекцию. И тогда уже нужен Atomic.

Так POST подразумевает добавление то мы не можем добавить новый элемент я это имеел виду
PUT же идемпотентен, что подразумевает изменения коллекции в данном случе там объекты и мы можем поменять им значение

Поправтье если ошибаюсь...

Но четкого ответа почему AtomicInteger, нет... Я думал здесь есть какой-то нюанс, о котором я не знал.
Напрмиер как с инъекцией через сеттер и конструктор.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105194
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
List.of() группа методов утилитных возвращают ImmutableList имплементации

это не страшно (хотя в данном примере List.of вообще лишний) - там позже проблема - в toList. чтоб результат мутабельный был, нужно использовать toCollection с правильным Supplier
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105199
-=Koba=-

авторнаверняка потом он напишет POST для добавления элементов в коллекцию. И тогда уже нужен Atomic.


Так POST подразумевает добавление то мы не можем добавить новый элемент я это имеел видуНу на той минуте не можем. Когда я такие туториалы делаю, то тоже начинаю только с GET, а затем добавляю и POST и рефакторю код который перестал работать. И точно так же я бы мог сразу создать Atomic потому что знаю что через 10 мин возможно буду генерить новые ID когда буду реализовывать POST.
Да - в том коде не было пока необходимости делать Atomic, да что там - даже счетчик заводить не надо было, мы могли цифры захардкодить без всяких стримов. Просто Человек думает наперед. О чем-то сразу подумал (Atomic), о чем-то вспомнит уже непосредственно во время реализации POSTa (например тот факт что он работает не с concurrent коллекцией).
-=Koba=-PUT же идемпотентен, что подразумевает изменения коллекции в данном случе там объекты и мы можем поменять им значениеPUT здесь не причем, PUT кол-во элементов менять не будет (хотя это само по себе не воспрещается и бывают случаи когда это имеет смысл). И уж точно новые ID мы в нем генерить не будем.
-=Koba=-Так POST подразумевает добавление то мы не можем добавить новый элемент я это имеел видуПочему не можем? Если мы будем писать POST, то он и будет добавлять в коллекцию. На той минуте POST'а еще не было просто.

chpasha
Stanislav Bashkyrtsev
Что не так? Что final не запрещает изменять коллекцию?

нет, что в коллекцию в примере можно что-то добавлять. но конечно не потому, что там final
Ну так выражай мысль полностью, а не обрывками.
lleming
List.of()
группа методов утилитных возвращают ImmutableList имплементации
В поле не List.of() уходит, а результат collect(toList()) - он в свою очередь mutable.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105204
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Ну так выражай мысль полностью, а не обрывками.
ну извини

Stanislav Bashkyrtsev
а результат collect(toList()) - он в свою очередь mutable.

нет :) . согласно процитированной мною доке, нет никаких гарантий того, что его результат мутабельный, потокобезопасный или сериализиеруемый, по-этому исходим из худшего - предполагаем, что такую коллекцию нельзя изменять
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105209
chpasha
Stanislav Bashkyrtsev
Ну так выражай мысль полностью, а не обрывками.
ну извини
Сорян, че-т я не заметил цитату с докой.

chpasha

Stanislav Bashkyrtsev
а результат collect(toList()) - он в свою очередь mutable.

нет :) . согласно процитированной мною доке, нет никаких гарантий того, что его результат мутабельный, потокобезопасный или сериализиеруемый, по-этому исходим из худшего - предполагаем, что такую коллекцию нельзя изменять
Интересно почему в доке так написано - код явно создает мутабельную коллекцию:
Код: java
1.
2.
3.
4.
5.
6.
    public static <T>
    Collector<T, ?, List<T>> toList() {
        return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add,
                                   (left, right) -> { left.addAll(right); return left; },
                                   CH_ID);
    }

Либо просто копи-паста из другого метода (эта фраза там 7 раз встречается), либо ради forward compatibility (что сомнительно - исключительно на доки мы редко полагаемся).
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105214
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev
Интересно почему в доке так написано - код явно создает мутабельную коллекцию:
Даем слово Брайану Гётцу :)

https://mail.openjdk.java.net/pipermail/core-libs-dev/2021-February/073948.htmlWhen I wrote Collectors::toList, ArrayList was
indeed the obvious default implementation choice -- but it was also
obviously not a very good choice. We didn't have an efficient
unmodifiable collection at the time, and wrapping with unmodifiableList
seemed like taxing a lot of well-behaved users for the would-be sins of
the few. But if we had efficient unmodifiable collections then, I would
absolutely, positively have made that choice.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105223
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105269
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
Stanislav Bashkyrtsev
Интересно почему в доке так написано - код явно создает мутабельную коллекцию:
Даем слово Брайану Гётцу :)

https://mail.openjdk.java.net/pipermail/core-libs-dev/2021-February/073948.htmlWhen I wrote Collectors::toList, ArrayList was
indeed the obvious default implementation choice -- but it was also
obviously not a very good choice. We didn't have an efficient
unmodifiable collection at the time, and wrapping with unmodifiableList
seemed like taxing a lot of well-behaved users for the would-be sins of
the few. But if we had efficient unmodifiable collections then, I would
absolutely, positively have made that choice.


весьма интересно, благорадствую
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105270
chpasha, спасибо! Судя по всему мы все-таки можем продолжать расчитывать на то что результат всегда будет mutable list.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105315
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком.

можно просто реализовать работу с копией - чем не имутабельность)
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105328
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И сколько времени ты будешь создавать копию?
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105373
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще. Создание копии объекта - это отдельный вопрос для собеса ИМХО.

Коллекции примитивов мы копируем легко. Более сложные объекты (не clonable) в общем случае - не копируются.
Или их алгоритм копирования - отдаётся на откуп разработчику.

Еще такой поинт к размышлению. Я создавал объекты-узлы-графа. Которые топологически связаны все-со-всеми.
И если вы реализуете deep-copy для такого объекта - то каждый узел будет содержать полную копию графа.
Кроме того что сам метод копирования будет нетривиален.

Есть также объекты принципиально не копируемые. Это контейнеры для файлов. Сокетов. И всякие
одноразовые объекты типа InputStream для которых у нас есть только 1 попытка их прочесть.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105383
mayton
Коллекции примитивов мы копируем легко. Более сложные объекты (не clonable) в общем случае - не копируются.
Дак в чистом ООП/функциональном программировании эти объекты immutable, а значит им не нужен deep copy.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105392
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я очень хочу посмотреть на такое чистое ООП где все - immutable. Пока не видел.
...
Рейтинг: 0 / 0
Final & AtomicInteger
    #40105404
mayton, java.time вроде полностью immutable.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Final & AtomicInteger
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]