java - map 与列表

标签 java performance map

输入:假设我有一个对象作为Person。它有 2 个属性,即

  • ssnNo - 社会保险号
  • 姓名

一方面我有一个 ListPerson 对象(具有唯一的 ssnNo),另一方面我有一个 Map 包含 Person 的ssnNo 作为键,Person 的 name 作为值。

输出:我需要使用其 ssnNo 的人名。

问题:

  1. 在我上面提到的 2 种方法中,应该采用哪种方法,即使用列表或 map ? (我认为显而易见的答案是 map )。

  2. 如果是 map ,无论数据集是大是小,是否总是建议使用 map ?我的意思是 map 是否存在任何性能问题。

最佳答案

map 是必经之路。 map 的性能非常好,并且随着数据集越大,它们在查找列表方面的优势就越大。

当然,还有一些重要的性能考虑因素:

  1. 确保您有一个良好的哈希码(和相应的 equals)实现,这样您的数据就会均匀分布在 map 的各个桶中。

  2. 确保在分配 map 时预先确定 map 的大小(如果可能的话)。 map 会自动调整大小,但调整大小操作本质上需要将每个先前的元素重新插入到更大的新 map 中。

关于java - map 与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513872/

相关文章:

python - 协调Python Aggdraw中的容器类型以获得最快的渲染速度?

java - 如何使JTextPane达到一张纸的大小?

java - 如果在 Android 中下载不完整,如何删除 pdf?

java - 如何在不使用 CrudRepository 的情况下让 java spring boot 应用程序中定义的实体反射(reflect)在数据库中

javascript - React 中的 componentWillMount 中的常量声明?

android - RecyclerView 会回收 NestedScrollView 中的项目吗?

C++ 使用文本文件中的数据存储映射对

C++将带有构造函数的对象插入 map

c++ - 尝试从 std::map 中查找 const char* 键时出错

java - dcoder 中的 hello world 教程出现问题