Collections.emptyList() 与新实例

2023-11-25

在实践中,返回一个空列表是否更好this:

return Collections.emptyList();

Or like this:

return new ArrayList<Foo>();

或者这完全取决于您要如何处理返回的列表?


主要区别在于Collections.emptyList()返回一个不可变的列表,即无法添加元素的列表。 (同样适用于List.of()Java 9 中引入。)

在极少数情况下,您do想要修改返回的列表,Collections.emptyList() and List.of()因此是not一个不错的选择。

我想说,只要合同(文档)没有明确说明不同,返回不可变列表就完全没问题(甚至是首选方式)。


此外,emptyList() 可能不会在每次调用时创建一个新对象。

此方法的实现不需要为每次调用创建单独的 List 对象。使用此方法的成本可能与使用类似名称的字段相当。 (与此方法不同,该字段不提供类型安全。)

实施emptyList看起来如下:

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

因此,如果您的方法(返回空列表)被频繁调用,这种方法甚至可能会给您带来更好的 CPU 和内存性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Collections.emptyList() 与新实例 的相关文章

随机推荐

  • azure api-apps、logic-apps、web-apps 和 azure function 之间的区别

    azure API 应用程序 逻辑应用程序 Web 应用程序和 azure 函数之间有什么区别 这对开发者来说有什么不同 逻辑应用程序 逻辑应用提供了一种在云中简化和实施可扩展集成和工作流程的方法 它提供了一个可视化设计器 可以将流程建模并
  • 将选项传递给 ES6 模块导入

    是否可以将选项传递给 ES6 导入 这句话怎么翻译 var x require module someoptions to ES6 没有办法用一个单一的方法来做到这一点import声明 它不允许调用 所以你不会直接调用它 但你基本上可以做与
  • 在 Postgres 中聚合多个字段时填充缺失的行

    我每天使用 Postgres 汇总一组产品的销售额 不仅需要知道何时发生销售 还需要知道何时不发生销售以进行进一步处理 SELECT sd date COUNT sd sale id AS sales sd product FROM sal
  • 在 OpenCV 中写入 AVI 文件

    网上有示例 Learn OpenCv O reilly 中给出了代码 经过多次尝试后 out avi 文件写入了 0 字节 我想知道我哪里出错了 以下是我使用的代码 int main int argc char argv CvCapture
  • 在 XML 中找不到未封闭的元素

    我有一个很大的 XML 文件 18MB 显然其中有一个标签未关闭 我知道这一点是因为当我运行 W3C 标记验证工具 validator w3 org 时 出现以下错误 You may have neglected to close an e
  • 透明 ARGB 十六进制值

    中的颜色this表全部不透明 我猜的价值A被设定为FF 透明度的代码是什么 例如这个颜色FFF0F8FF AliceBlue 为透明代码如 F0F8FF 以下是 到十六进制值的表格 Example 对于 85 的白色 您可以使用 D9FFF
  • 如何使用 jquery 同位素按日期排序(新)

    请原谅我 因为我对 JS 有点新手 只知道足够的操作 对于那些熟悉同位素的人来说 http isotope metafizzy co docs sorting html 我在页面顶部有一个按日期排序的按钮 同位素找到元素 span clas
  • Javascript 非阻塞脚本,为什么不简单地将所有脚本放在 标记之前?

    为了避免 javascript 阻塞网页渲染 我们是否可以将所有 JS 文件 代码放在关闭之前加载 执行 tag 所有的 JS 文件和代码只有在整个页面渲染完成后才会下载并执行 所以需要像这篇文章中建议的技巧吗 非阻塞技术加载JS文件 他基
  • Yup 模式中的可选字段验证

    我在用着react hook form with yup用于我的表单验证并希望某些字段是可选的 空 按照他们的文档 我正在使用nullable and optional 但它仍在得到验证 export const updateAddress
  • 如何在单击按钮时从一个视图控制器导航到另一个视图控制器?

    我是 iOS 应用程序开发新手 请帮助我如何从一开始view controller到另一个view controller单击按钮时 按照以下步骤 让按钮选择器为 button addTarget select action selector
  • Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]”

    我在使用 在 app 上播放 歌曲 命令时遇到问题 具体来说 Android Auto 无法识别 应用程序 我收到一条音频语音消息 不知道如何帮助在应用程序上播放歌曲 因此 语音识别工作正常 正如我所说的歌曲和应用程序一样 但是与应用程序的
  • 无法使用 OpenMPI 安装 mpi4py:无法编译 MPI 程序

    这是我在这里发表的第一篇文章 如果我的风格有误 请道歉 我一直在尝试使用 python 3 6 在 Ubuntu 16 04 上安装 mpi4py 因为 SU2 需要它进行并行处理 我下载了mpi4py并尝试从源代码构建 因为我想使用我配置
  • 如何配置 Jenkins 以在工作区中显示我的日志?

    我正在使用 Jenkins 进行 CI 并且希望能够公开日志 这样我们就不必通过 telnet 到 CI 框来查看发生了什么 有一个插件可以做到这一点吗 或者我只需要写一个脚本 我的答案是关于读取应用程序服务器 容器日志文件不同的盒子比詹金
  • Vue方法滚动div到顶部

    我在学习vue 我有以下方法 将聊天消息添加到 div 中id toolbar chat 这个 div 允许在 y 轴上滚动 我希望每次添加新消息时 div 都能跳到顶部 为什么我的 JS 不起作用 document getElementB
  • iOS 5 应用程序中对 iOS 6 功能的有条件支持

    如何在应用程序中支持 iOS6 的功能Minimal Deployment Target设置为iOS 5 0 例如 如果用户拥有 iOS 5 他将看到一个UIActionSheet 如果用户有 iOS 6 他会看到不同的UIActionSh
  • 无法转换 System.Runtime.Remoting.ObjectHandle

    在我的代码中我有一个接口 可以说它被称为InterfaceName及其实现称为InterfaceImpl 现在 当我动态尝试获取InterfaceImpl使用以下代码 object obj Activator CreateInstance
  • 如何在 Facebook 页面(不是个人资料)上发布信息到墙上

    我有一个用 php 编写的博客网站 它将新的博客文章发布到 twitter 并在后台使用使用 php curl 传递的简单 http post 请求自动进行博客 ping 我有一个博客网站的 Facebook 页面 并且希望将更新发布到页面
  • Visual 2010 不断告诉我“错误:表达式必须具有类类型”

    好吧 我需要一些见解 我正在学习 C 课程 并正在进行我的第二个项目 我正在尝试创建一个选项列表 允许您将电子邮件存储在字符串向量中 现在 在花时间帮助我并查看代码之前 我想指出我的问题 我在文件 HughesProject2 1 cpp
  • 如何进行rails外部数据库调用?

    所以我希望能够将外部数据库添加到我的config database yml然后从中建模一张表 这可能吗 我一直不知道怎么做 连接不同模型的多个数据库 连接通常通过以下方式创建ActiveRecord Base establish conne
  • Collections.emptyList() 与新实例

    在实践中 返回一个空列表是否更好this return Collections emptyList Or like this return new ArrayList