假设我有一个书元素列表:List<Book> libraryBooks
和以下代码:
List<BookAuthor> authors = new ArrayList<>();
libraryBooks.stream().forEach(e -> {
authors.add(createAuthor(e));
});
我环顾四周,发现了类似的问题(例如here),但我尚未说服。因为我一直在阅读有关该主题的书,并且该书似乎表明如果并行运行流,则以上内容可能会引入竞争条件-但我未使用并行流,因此上述内容也受竞争条件的影响?还是这本书是错误的/误导性的?
答案 0 :(得分:0)
当您需要通过对每个元素应用函数来创建新的项目列表时,map
是您应使用的函数。这是你应该怎么写的:
List<BookAuthor> authors = libraryBooks.stream()
.map(e -> createAuthor(e))
.collect(Collectors.toList());