Java 8将对象添加到列表的有效方法

问题描述 投票:0回答:1

是否有一种简短有效的方法将对象添加到具有空检查的列表中?

Book book = new Book();
if (CollectionUtils.isNotEmpty(library.getBooks())) {
        library.getBooks().add(book);
} else {
        library.setBooks(Collections.singletonList(book));
}
java list performance java-8
1个回答
4
投票

我绝对不喜欢你的List可能包含null的事实,无论如何,这是什么意思?你为什么不重构并返回一个空的。假设你不能改变它(请仔细检查你是否可以),不要在一行中做,只是因为它很花哨 - 在这种特殊情况下它将是非常难以理解的。此外,我强烈反对像CollectionsUtilsStringUtils等这些辅助方法 - 这只会让阅读代码变得更糟;不是说他们所有人(guava有一些我真的喜欢和使用)

相反,将这个重构为更简单,更愉快的方法:

List<Book> books = library.getBooks();
if(books != null && !books.isEmpty()) {
     books.add(book);   
} else {
     library.setBooks(Collections.singletonList(book));    
}

你需要多少秒才能理解这个逻辑?例如,对于这里的另一个答案(没有个人的,你提出了一个很好的观点)。

但这仍然为我个人提出了一些问题。为什么不将这整个逻辑移到Library类?如果您以后要将另一本书添加到库中,该怎么办?因为你使用了不可变的Collections.singletonList,你将无法使用。

© www.soinside.com 2019 - 2024. All rights reserved.