stream () и parallelStream () при добавлении в ArrayList - PullRequest
0 голосов
/ 19 декабря 2018

У меня был этот кусок кода

List<UserNotification> userNotifications = new ArrayList<UserNotification>();

teatreAlertNotifications
            .parallelStream()
            .forEach(can -> userNotifications.add(new UserNotification(can)));

Но поскольку ArrayList не синхронизирован, я думаю, что это плохая практика, и я должен использовать .stream () вместо

1 Ответ

0 голосов
/ 19 декабря 2018

Или просто:

List<UserNotification> userNotifications = teatreAlertNotifications
           .parallelStream()
           .map(UserNotification::new)
           .collect(Collectors.toList());

Это называется ненужными побочными эффектами, которые обычно не рекомендуются в документации.

Вы можете сохранить исходный код, но использовать синхронизированную структуру данных (поточно-ориентированную), но в этом случае порядок элементов не гарантируется.

...