”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何将 int[] 转换为 Integer[] 以用作 Java 中的映射键?

如何将 int[] 转换为 Integer[] 以用作 Java 中的映射键?

发布于2024-11-03
浏览:931

How to Convert int[] to Integer[] for Use as Map Keys in Java?

Java中Map Keys的int[]转换为Integer[]:综合指南

Java中,Map key需要引用相等,这是无法实现的具有像 int[] 这样的原始类型。当使用 int[] 数组并需要将它们用作 Map 中的键时,有必要将它们转换为合适的对象类型。让我们探索一下这种转换的各种选项。

方法 1:Arrays.stream().boxed().toArray()

Java 8 引入了一种将 int[] 转换为 Integer[ 的简洁方法] 使用流API:

int[] data = {1,2,3,4,5,6,7,8,9,10};

Integer[] primitiveToBoxed = Arrays
        .stream(data)
        .boxed()
        .toArray(Integer[]::new);

方法2:IntStream.of().boxed().toArray()

使用IntStream的类似方法:

Integer[] primitiveToBoxed = IntStream
        .of(data)
        .boxed()
        .toArray(Integer[]::new);

映射键的注意事项

虽然 Integer[] 可以作为键,但它可能并不理想,因为:

  • 重载: Integer 缓存 -128 到 127 之间的值,导致较大数据集中可能发生冲突。
  • 性能开销: Integer[] 创建新 Integer每个 int 值的对象,引入额外的开销。

替代选项

为了获得更好的性能和关键唯一性,请考虑使用:

  • 自定义对象: 创建一个自定义类,封装 int[] 并实现 hashCode() 和 equals() 以进行高效查找。
  • 长整型: 由于长整型值可以表示整数,因此它们可以用作 Maps 中的键,其性能比 Integer[].
  • 外部库: 查看 Apache Commons Collections Library 或 Google Guava 以获得以高性能方式处理原始类型的专用集合。

请记住,最佳方法取决于数据集的大小和性能要求。选择适当的技术使您能够有效地跟踪数据集中 int[] 组合的频率。

最新教程 更多>
  • 创建对外部存储库的拉取请求
    创建对外部存储库的拉取请求
    本周的重点是实验 2,其中涉及通过创建拉取请求 (PR) 为我不拥有的存储库做出贡献。我首先选择一个同学的存储库来进行工作。鉴于 JavaScript 是我的主要编程语言,我选择了基于 JavaScript 的存储库来简化我的工作流程。虽然我愿意探索其他语言,但我选择 JS 项目节省了时间,让我可以...
    编程 发布于2024-11-08
  • 如何处理 PHP 中的 PDO 异常并防止“Null”状态?
    如何处理 PHP 中的 PDO 异常并防止“Null”状态?
    处理 PDO 异常在 PHP 中使用 PDO 时,处理错误对于调试和确保数据完整性至关重要。然而,您提供的代码没有正确处理错误,导致“null”状态和未报告的错误。关键问题是PDO默认情况下不会抛出异常。要启用异常处理,必须显式设置错误模式属性:$connection->setAttribut...
    编程 发布于2024-11-08
  • 十二人受伤,一千多人受伤。
    十二人受伤,一千多人受伤。
    美国不知道黎巴嫩传呼机爆炸吗?事实上,他们已经提前收到警告了! 据多家外媒报道,9月17日下午,黎巴嫩和叙利亚数千名真主党成员使用的寻呼机几乎同​​时发生爆炸,造成12人死亡、千余人受伤。 黎巴嫩真主党指责以色列发动了这次袭击,并发誓要对以色列进行报复,但以色列拒绝对此事件发表评论。事件发生后,美...
    编程 发布于2024-11-08
  • 机器学习简介
    机器学习简介
    什么是机器学习? 机器学习是计算机科学的一个领域,它使用静态技术赋予计算机系统“学习”的能力数据,没有 被明确编程。 这意味着,“ML 就是从数据中学习” 显式编程意味着,为每个场景编写代码,以处理该情况。 在机器学习中,我们不是为每个场景编写明确的代码,而是训练模型从数据中学习模...
    编程 发布于2024-11-08
  • 如何捕获 JavaScript 中自定义异常的堆栈跟踪?
    如何捕获 JavaScript 中自定义异常的堆栈跟踪?
    获取一系列抛出的异常虽然 JavaScript 允许引发异常,但获取自定义异常的堆栈跟踪可能具有挑战性。本文探讨了专门针对用户定义的异常检索堆栈跟踪的各种方法。Error 对象的 stack 属性提供了一个简单的解决方案。通过创建一个新的 Error 对象并访问其 stack 属性,您可以捕获跟踪:...
    编程 发布于2024-11-08
  • 了解 React 中的关键属性 - 常见错误
    了解 React 中的关键属性 - 常见错误
    如果你喜欢我的文章,可以请我喝杯咖啡:) 在 React 中使用列表时,最关键的概念之一是 key 属性。键在 React 如何管理列表更新方面发挥着重要作用。 React 中的键是什么? 在 React 中,键是分配给列表中元素的唯一标识符。这些键帮助 React 确定哪些项目已更...
    编程 发布于2024-11-08
  • 掌握 React:构建强大 Web 应用程序的循序渐进之旅(简介)
    掌握 React:构建强大 Web 应用程序的循序渐进之旅(简介)
    React is a popular JavaScript library used to build user interfaces, especially for single-page websites or apps. Whether you're a complete beginner o...
    编程 发布于2024-11-08
  • JavaScript DOM 与 BOM!
    JavaScript DOM 与 BOM!
    DOM DOM 代表文档对象模型,代表网页。这允许程序操纵文档结构、样式和内容。 const listDiv = document.getElementById("list-div"); listDiv.classList.add('new-class'); listDiv.cla...
    编程 发布于2024-11-08
  • 绑定和模板:Peasy-UI 系列的一部分
    绑定和模板:Peasy-UI 系列的一部分
    Table of Contents Introduction Bindings and the Template Text Bindings Basic Binding Conditional Boolean Text B...
    编程 发布于2024-11-08
  • 实现接口
    实现接口
    定义接口后,一个或多个类可以实现它。 要实现接口,请在类定义中使用 Implements 子句。 该类必须实现接口所需的所有方法。 包含 Implements 子句的类的一般形式是: 类类名扩展超类实现接口{ // 类体 } 若要实现多个接口,接口之间用逗号分隔。 实现接口时,extend...
    编程 发布于2024-11-08
  • 检查 Effect-TS 选项中的元素:实用指南
    检查 Effect-TS 选项中的元素:实用指南
    Effect-TS 提供了检查 Option 是否包含特定值的方法。这些函数允许您使用自定义等价函数或默认等价来确定选项中是否存在值。在本文中,我们将探讨用于检查选项中元素的两个关键函数:O.containsWith 和 O.contains. 示例 1:使用 O.containsW...
    编程 发布于2024-11-08
  • Python 面向对象编程简介
    Python 面向对象编程简介
    Python 编程语言 Python 是一种解释型、面向对象的编程语言。由于其高级内置数据结构和动态类型,它在快速开发新应用程序以及编写脚本代码以组合用不同语言编写的现有组件方面很受欢迎。 Python简单易学的语法强调可读性,从而降低了长期程序维护的成本和复杂性。它支持各种包含代...
    编程 发布于2024-11-08
  • 最佳软件比较中的顶级数据科学工具
    最佳软件比较中的顶级数据科学工具
    介绍 到 2024 年,数据科学将通过使用复杂的分析、人工智能和机器学习推动决策,继续改变业务。随着对熟练数据科学家的需求不断增加,对能够加快操作、提高生产力并提供可靠见解的强大工具的需求也在增加。但是,有这么多可用的选项,目前哪种软件最适合专业人士? 这项比较研究探讨了 2024...
    编程 发布于2024-11-08
  • 我如何将应用程序性能提高到
    我如何将应用程序性能提高到
    ⌛ 回顾时间 在我的上一篇博客中,我谈到了如何在短短 2 周内将应用程序大小从 75MB 减少到 34MB(查看!)。但这还不是全部,我还将我们应用程序的整体性能提高了 80%?. 让我们来看看如何!! ?传说 经过简单的一轮浏览后,我发现我们的应用程序中存在一些导...
    编程 发布于2024-11-08
  • Django 查询集可以通过模型属性过滤吗?
    Django 查询集可以通过模型属性过滤吗?
    按模型属性过滤 Django 查询集Django 模型上的查询通常使用标准过滤器根据预定义字段值选择特定实例。但是,如果您需要根据模型中定义的自定义属性进行过滤,该怎么办?您可以通过模型属性过滤查询集吗?不幸的是,Django 的过滤器主要运行在数据库级别,将它们转换为 SQL 命令以有效地检索数据...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3