|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
-=Koba=- Почему на 30 строчке используется AtomicInteger, а не просто int? имхо в данном примере никакого смысла в нем нет (или скажем осторожнее - лично я его не вижу). Либо автор просто привык делать так из-за более сложных случаев, когда есть какой-то параллелизм (ну например по какой-то безумной причине ему захочется в тестовом примере с фейковыми данными написать parallelStream вместо stream), либо по какой-то эстетической причине ему incrementAndGet нравится больше, чем id++. В последнем случае можно однако поинтересоваться, чем ему List.of().stream нравится больше Stream.of ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 13:41 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
-=Koba=-, он просто думает наперед - наверняка потом он напишет POST для добавления элементов в коллекцию. И тогда уже нужен Atomic. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 14:13 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Она же финал... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 14:30 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
-=Koba=-, это не запрещает туда добавлять новые элементы. Это запрещает назначать новую коллекцию в тот же указатель customers. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 14:40 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev это не запрещает туда добавлять новые элементы Collectors.toListThere are no guarantees on the type, mutability, serializability, or thread-safety of the List returned Поэтому есть сомнения в том, на сколько наперед там кто-то думал в обучающем примере и думал ли вовсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 15:40 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
-=Koba=- Stanislav Bashkyrtsev, Она же финал... нужно срочно почитать что такое примитиы и ссылочные типы данных,как в джава передается и тот и тот тип и потом станет понятно,что к чему Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
осознай этот код ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 18:23 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
chpasha Stanislav Bashkyrtsev это не запрещает туда добавлять новые элементы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 02:18 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Что не так? Что final не запрещает изменять коллекцию? нет, что в коллекцию в примере можно что-то добавлять. но конечно не потому, что там final ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 14:29 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
List.of() группа методов утилитных возвращают ImmutableList имплементации ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 14:45 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Начали за здравие, а кончил за упокой Stanislav Bashkyrtsev Написал авторнаверняка потом он напишет POST для добавления элементов в коллекцию. И тогда уже нужен Atomic. Так POST подразумевает добавление то мы не можем добавить новый элемент я это имеел виду PUT же идемпотентен, что подразумевает изменения коллекции в данном случе там объекты и мы можем поменять им значение Поправтье если ошибаюсь... Но четкого ответа почему AtomicInteger, нет... Я думал здесь есть какой-то нюанс, о котором я не знал. Напрмиер как с инъекцией через сеттер и конструктор. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 14:59 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
lleming List.of() группа методов утилитных возвращают ImmutableList имплементации это не страшно (хотя в данном примере List.of вообще лишний) - там позже проблема - в toList. чтоб результат мутабельный был, нужно использовать toCollection с правильным Supplier ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 15:09 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
-=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 имплементации ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 15:25 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Ну так выражай мысль полностью, а не обрывками. Stanislav Bashkyrtsev а результат collect(toList()) - он в свою очередь mutable. нет :) . согласно процитированной мною доке, нет никаких гарантий того, что его результат мутабельный, потокобезопасный или сериализиеруемый, по-этому исходим из худшего - предполагаем, что такую коллекцию нельзя изменять ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 15:39 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
chpasha Stanislav Bashkyrtsev Ну так выражай мысль полностью, а не обрывками. chpasha Stanislav Bashkyrtsev а результат collect(toList()) - он в свою очередь mutable. нет :) . согласно процитированной мною доке, нет никаких гарантий того, что его результат мутабельный, потокобезопасный или сериализиеруемый, по-этому исходим из худшего - предполагаем, что такую коллекцию нельзя изменять Код: java 1. 2. 3. 4. 5. 6.
Либо просто копи-паста из другого метода (эта фраза там 7 раз встречается), либо ради forward compatibility (что сомнительно - исключительно на доки мы редко полагаемся). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 15:51 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 16:03 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 16:24 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
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. весьма интересно, благорадствую ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 19:02 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
chpasha, спасибо! Судя по всему мы все-таки можем продолжать расчитывать на то что результат всегда будет mutable list. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2021, 19:11 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
mayton Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком. можно просто реализовать работу с копией - чем не имутабельность) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 09:05 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
И сколько времени ты будешь создавать копию? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 09:32 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Вообще. Создание копии объекта - это отдельный вопрос для собеса ИМХО. Коллекции примитивов мы копируем легко. Более сложные объекты (не clonable) в общем случае - не копируются. Или их алгоритм копирования - отдаётся на откуп разработчику. Еще такой поинт к размышлению. Я создавал объекты-узлы-графа. Которые топологически связаны все-со-всеми. И если вы реализуете deep-copy для такого объекта - то каждый узел будет содержать полную копию графа. Кроме того что сам метод копирования будет нетривиален. Есть также объекты принципиально не копируемые. Это контейнеры для файлов. Сокетов. И всякие одноразовые объекты типа InputStream для которых у нас есть только 1 попытка их прочесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 12:20 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
mayton Коллекции примитивов мы копируем легко. Более сложные объекты (не clonable) в общем случае - не копируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 12:54 |
|
Final & AtomicInteger
|
|||
---|---|---|---|
#18+
Я очень хочу посмотреть на такое чистое ООП где все - immutable. Пока не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 13:31 |
|
|
start [/forum/topic.php?fid=59&msg=40105199&tid=2120323]: |
0ms |
get settings: |
7ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
40ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
427ms |
get tp. blocked users: |
0ms |
others: | 2235ms |
total: | 2721ms |
0 / 0 |