Java 8将对象添加到列表的有效方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 8将对象添加到列表的有效方法相关的知识,希望对你有一定的参考价值。
是否有一种简短有效的方法将对象添加到具有空检查的列表中?
Book book = new Book();
if (CollectionUtils.isNotEmpty(library.getBooks())) {
library.getBooks().add(book);
} else {
library.setBooks(Collections.singletonList(book));
}
答案
我绝对不喜欢你的List
可能包含null
的事实,无论如何,这是什么意思?你为什么不重构并返回一个空的。假设你不能改变它(请仔细检查你是否可以),不要在一行中做,只是因为它很花哨 - 在这种特殊情况下它将是非常难以理解的。此外,我强烈反对像CollectionsUtils
或StringUtils
等这些辅助方法 - 这只会让阅读代码变得更糟;不是说他们所有人(guava
有一些我真的喜欢和使用)
相反,将这个重构为更简单,更愉快的方法:
List<Book> books = library.getBooks();
if(books != null && !books.isEmpty()) {
books.add(book);
} else {
library.setBooks(Collections.singletonList(book));
}
你需要多少秒才能理解这个逻辑?例如,对于这里的另一个答案(没有个人的,你提出了一个很好的观点)。
但这仍然为我个人提出了一些问题。为什么不将这整个逻辑移到Library
类?如果您以后要将另一本书添加到库中,该怎么办?因为你使用了不可变的Collections.singletonList
,你将无法使用。
以上是关于Java 8将对象添加到列表的有效方法的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地存储中的 JSON 对象添加到 Android Studio 上的片段列表
如何使用对象列表在片段中实现newinstace模式[重复]