gpt4 book ai didi

java - 我是否应该将字符串键重新映射为整数以将属性存储在集合中? java

转载 作者:行者123 更新时间:2023-11-30 06:17:59 25 4
gpt4 key购买 nike

我有一个非常可修改的系统,我将属性存储在 HashMap 中。键是一个 String,值是 Value 类的层次结构。

在我的项目中,代码访问 Map 的频率非常高,以至于 HashMap 访问和字符串处理成为探查器中的主要成本。

我想知道如果将字符串映射到整数并将容器从 HashMap 切换到数组,是否可以提高性能。字符串键不是临时的,它们是有限的,我会知道在初始化时使用的所有字符串,由类用户传递给我。

我将有以下编码/使用开销:

  1. 在开始时注册 key 。
  2. 如果我希望保留相同的类接口(interface),则在运行时根据每个请求将字符串转换为索引。
  3. 还管理这些中间映射的序列化。

如果我也切换类接口(interface)(非常痛苦,但是可以做到),我可以在处理阶段完全摆脱字符串,只在数据设置配置中使用它们。

但是会有实质性的好处还是我只是在浪费时间?

最佳答案

您所描述的将字符串映射到整数然后使用整数作为数组索引的过程实际上是原始 HashMap 实现的基础!在内部,Java 的 HashMap 类正在做类似的事情,但更高级一些。

我不建议走这条路。许多库都试图超越 Java 的 HashMap 类的性能,但没有一个库能够做得更好。查看基准here .

如果您需要提高性能并且大部分时间都花在 HashMap 上,请考虑将数据划分为多个 HashMap 并跨多个线程处理数据。这应该会给您带来显着的性能改进,但您需要提供有关您的用例的更多详细信息,以便了解这是否真的适合您的情况。

关于java - 我是否应该将字符串键重新映射为整数以将属性存储在集合中? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48793491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com