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

将对象列表从 c# 传递到糟糕的 c++ win32 本机 dll 的最有效方法是啥?

是否可以将一个对象从一个片段发送到另一个片段?

将对象列表从片段传递到 recyclerView 适配器

Method