java - 让 Map 表现得像 ArrayList

标签 java dictionary arraylist hash hashmap

这就像我读过的java拼图一样,我知道没有任何实际好处。问题是-
你能使用 Map 实现类似 ArrayList 的结构吗?这种构造有什么好处?

然后我认为我们可以使用这样的结构(来存储String) -

Map<Integer, String> dummyArrayList = new HashMap<>();  

现在我们可以像这样使用该结构作为ArrayList -

dummyArryList.put(1, "firstString");
dummyArrayList.put(2, "secondString");
dummyArrayList.put(9, "9thString");

这里的键就像ArrayList的索引一样使用。我认为这种结构的好处(如果我错了,请纠正我)-

  1. 项目可以添加到任何索引处,其中 ArrayList 项目添加到 ArrayList 的最后一个位置。
  2. 由于使用了散列,可以更快地访问项目(对此有点困惑)

我知道我们不应该在现实生活中使用这些类型的结构。但我只是想知道是否可以使用散列比索引更快地访问集合中的项目?

最佳答案

我同意第一点,它可以被视为一项功能。

但我猜访问它会比 ArrayList 慢。

在这种情况下,它会像

  • 计算 key 的哈希值 (hashcode())
  • 匹配哈希值
  • 再次匹配 key (equals())
  • 访问项目

ArrayList 的工作方式如下

  • 像数组一样找到第一个(0索引)响应的 block
  • 访问该项目

关于java - 让 Map 表现得像 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28979351/

相关文章:

java - 蓝牙客户端-服务器通信[java]

java - 如何模拟junit覆盖率的异常?

java - 如何将JAVA对象属性提取到一维数组中

java - 有没有办法在排序的集合或数组之间放置一个换行符?

java - GWT Guice/Gin 在服务器端的问题

java - 使用 "+"运算符的非字符串操作数后,结果字符串会进入字符串池吗?

c++ - 通过迭代器打印 vector 的大小

c# - 将通用列表的元素添加到字典

hadoop - 每个 mapper 中的 Hashmap 应该在单个 reducer 中使用

java - 从列表和比较器 java 中删除