双括号初始化 - 优点

2023-12-30

知道我们可以通过使用双括号初始化来初始化java中的集合。对此进行了一些搜索,发现由于其性能问题,不建议使用它。

private static final Set<String> VALID_CODES = new HashSet<String>() {{
    add("XZ13s");
    add("AB21/X");
    add("YYLEX");
    add("AR2D");
 }};

只是想知道,双括号初始化有什么积极的一面或优势吗?


由于其性能问题,不建议使用它。

我没有看到任何性能问题。每当您看到有人说我出于性能原因做了/没有做某事时,您应该期望看到详细的分析,比较替代方案,解释一个方案如何满足特定的性能要求,而另一个则没有。如果您没有看到所有这些,您可能会认为作者只是猜测。

编辑:虽然我承认每个类需要少量的时间来加载,但运行性能是完全相同的。我已经在这里演示了https://stackoverflow.com/a/14627268/57695 https://stackoverflow.com/a/14627268/57695

如果您认为双括号表示法更简单、更清晰,我会使用它。

缺点是您正在更改集合的类型,这可能会在不期望的情况下混淆函数。例如等于。

注意:正如 Lukas Eder 指出的那样,如果在非静态上下文中执行此操作,您需要小心。匿名子类集合将隐式地引用外部实例,如果它的寿命比集合长,这将是内存泄漏。你有没有想过内存泄漏的可能性? http://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/

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

双括号初始化 - 优点 的相关文章

随机推荐

  • Python:反转具有透明背景的图像(PIL,Gimp,...)

    我在透明背景上有一组白色图标 我想将它们全部反转为透明背景上的黑色 尝试过 PIL ImageChops 但它似乎不适用于透明背景 我也尝试过 Gimp 的 Python 界面 但也没有成功 你知道如何在 Python 中最好地实现反转吗
  • 将远程文件添加到 zip 文件

    有没有办法将文件从另一台带有 php zip 扩展名的服务器添加到 zip 文件中 IE addFile array localfile txt http www domain com remotefile txt that obvious
  • 如何在 Mac OS 中创建用于运行终端命令的停靠图标

    现在我使用终端使用命令打开 jmeter open usr local bin jmeter 我经常需要它 所以我想创建停靠图标来运行此命令 我该怎么做 我尝试右键单击并选择 保留在停靠区 选项 但是 当我关闭应用程序时 它就会消失 我能得
  • 节点应用程序在一定时间后无响应

    我试图弄清楚为什么我的 Nodejs 应用程序变得11 小时 20 分钟后无反应 每次都会发生 无论我是否运行它amazon linux or Red Hat 我的堆栈 Nodejs v 6 9 4 MongoDB 3 2 pm2进程管理器
  • Hausman 对 lme4 中“glmer”的规范测试

    我想制作一个 广义线性模型的固定 随机模型 family 二项式 因为我有一个数据库 其中观察来自总体并且有分组结构 然后我使用该功能glmer来自lme4包 我也读到我可以使用glmmPQL库中的函数MASS 遥远 2006 当我想使用
  • 在 web2py 的本地安装中安装 Python 模块

    我在 Windows 机器上运行 web2py 我正在开发一个应用程序 但它不断出错 因为它说我尝试使用的模块未安装 然而它安装在我的本地 python 安装中 如何安装模块以便 web2py 可以识别它们 web2py 可以识别本地 Py
  • 如何在 Android 中的可跨越字符串之间留出空间?

    Code private void setSpans Editable s ColorInt int backgroundColor BackgroundColorSpan spans s getSpans 0 s length Backg
  • Java 中数据类型的默认值是什么? [复制]

    这个问题在这里已经有答案了 我对 Java 很陌生 总是对数据类型有疑问 那么有哪些defaultJava 中所有数据类型的值 byte 0 short 0 int 0 long 0 float 0 0f double 0 0d char
  • 单击 ListView 项目会更改项目内元素的状态吗?

    我不知道如何解释这个问题 但我会尝试 我有一个包含多个项目的 ListView 每个项目内部都有一个 TextView 和两个 ImageView 我希望当我单击它们时 ImageView 会发生变化 并且当我长时间按下 ListView
  • 如何清除 Android 中的旧徽章计数

    我设置 0 表示其显示徽章计数为 1 如何清除我的旧徽章计数 徽章计数设置方法 public static void setBadge Context mContext int count String launcherClassName
  • 使用 Visual Studio 2010 将 VB6 迁移到 .Net

    有人使用 Visual Studio 2010 将 VB6 项目迁移到 Net 吗 我已经在 VS2005 中测试了迁移 但是生成的 Net 代码非常混乱 因此我们决定不迁移到 Net 那么VS2010的迁移向导比VS2005或VS2008
  • REST API 上的 CakePHP 身份验证

    因此 我正在为我正在开发的 Web 应用程序创建一个 REST API 并且我知道身份验证的基本方法是在每个请求上发送凭据或发送令牌 由于我以前从未使用过令牌 因此我想我可以为每个请求发送凭据 关键是我找不到任何有关如何在控制器中处理此问题
  • 使用 pandas.SparseSeries.from_coo() 函数的非 NDFFrame 对象错误

    我正在尝试将 COO 类型稀疏矩阵 来自 Scipy Sparse 转换为 Pandas 稀疏序列 从文档 http pandas pydata org pandas docs stable sparse html http pandas
  • 在 Keras 中设置 LearningRateScheduler

    我正在 Keras 中设置学习率调度程序 使用历史损失作为 self model optimizer lr 的更新程序 但 self model optimizer lr 上的值不会插入到 SGD 优化器中 并且优化器为使用默认学习率 代码
  • 如何禁用 vscode 中的误报错误?

    我写了这个基本的 C 程序 int main int argc char const argv int n rand int a n return a 0 哪个在 gcc 中正确编译 但是 MS C C 智能感知在显示错误曲线时指出expr
  • 用多行突出显示 ggplot 中的一行

    我想改变size linetype colorggplot 中的一行等 这是一个最小的可重现示例 library tidyverse Data in wide format df wide lt data frame Horizons se
  • 从 UIButton 中获取 UILabel

    我有一个 UIButton 其中 UILabel 作为子视图添加到其中 有没有一种简单的方法可以将 UILabel 从中取出 以便我可以更改它的标题 如果您指定一个tag当您仍然有对它的引用时 您可以稍后通过搜索视图来找到它tag 像这样
  • 如何正确使用 ES6“导出默认值”和 CommonJS“要求”?

    我一直在努力Webpack教程 http blog madewithlove be post webpack your bags 在其中一个部分中 它给出了包含该问题的一行本质的代码示例 export default class Butto
  • 使用 C# 获取 MySQL 记录数

    我想知道如何使用 C 获取查询的记录计数 这是我使用的代码 MySqlDataReader recordset null query new MySqlCommand SELECT FROM test ORDER BY type ID AS
  • 双括号初始化 - 优点

    知道我们可以通过使用双括号初始化来初始化java中的集合 对此进行了一些搜索 发现由于其性能问题 不建议使用它 private static final Set