Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Final & AtomicInteger / 25 сообщений из 32, страница 1 из 2
17.10.2021, 11:30
    #40105013
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
Смотрю тут видео с SpringDeveloper

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

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

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

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

Поэтому есть сомнения в том, на сколько наперед там кто-то думал в обучающем примере и думал ли вовсе.
...
Рейтинг: 0 / 0
17.10.2021, 18:23
    #40105055
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
-=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
18.10.2021, 02:18
    #40105077
Final & AtomicInteger
chpasha
Stanislav Bashkyrtsev
это не запрещает туда добавлять новые элементы
это не так
Что не так? Что final не запрещает изменять коллекцию?
...
Рейтинг: 0 / 0
18.10.2021, 14:29
    #40105178
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
Stanislav Bashkyrtsev
Что не так? Что final не запрещает изменять коллекцию?

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

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

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

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

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

это не страшно (хотя в данном примере List.of вообще лишний) - там позже проблема - в toList. чтоб результат мутабельный был, нужно использовать toCollection с правильным Supplier
...
Рейтинг: 0 / 0
18.10.2021, 15:25
    #40105199
Final & AtomicInteger
-=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
18.10.2021, 15:39
    #40105204
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
Stanislav Bashkyrtsev
Ну так выражай мысль полностью, а не обрывками.
ну извини

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

нет :) . согласно процитированной мною доке, нет никаких гарантий того, что его результат мутабельный, потокобезопасный или сериализиеруемый, по-этому исходим из худшего - предполагаем, что такую коллекцию нельзя изменять
...
Рейтинг: 0 / 0
18.10.2021, 15:51
    #40105209
Final & AtomicInteger
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
18.10.2021, 16:03
    #40105214
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
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
18.10.2021, 16:24
    #40105223
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком.
...
Рейтинг: 0 / 0
18.10.2021, 19:02
    #40105269
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
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
18.10.2021, 19:11
    #40105270
Final & AtomicInteger
chpasha, спасибо! Судя по всему мы все-таки можем продолжать расчитывать на то что результат всегда будет mutable list.
...
Рейтинг: 0 / 0
19.10.2021, 09:05
    #40105315
localhost8080
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Final & AtomicInteger
mayton
Настоящая иммутабельность потребовала - бы версионных структур данных. Для Java - это слишком.

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

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

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

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


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