散列和索引列表或数组?

Suz*_*ioc 5 java vector hashmap

Java中是否有任何类,它按顺序包含一系列元素并针对快速搜索进行优化?

即我需要通过数字索引(如in Vector)和hash(如in HashMap)检索元素.

LinkedHashMap不匹配

我认为LinkedHashMap不匹配,因为它保证顺序,但不允许通过索引(位置编号)快速访问.根据描述,将需要遍历整个链以找到给定位置.这是任何Collection可以使用迭代器的东西.

编辑2

即按键和索引搜索都应该快速,而不仅仅是按键.

Ósc*_*pez 2

您可以使用 aMap通过哈希快速检索元素。根据定义,aMap是无序的,谈论索引没有多大意义。使用LinkedHashMap可能会有用,因为它保证在迭代时保留插入顺序,尽管通过索引访问元素仍然需要一些额外的处理,如下所示:

map.entrySet().toArray()[index] // mind the casts, etc.
Run Code Online (Sandbox Code Playgroud)

如果您的映射不经常更改,那么如果您缓存数组并在按索引访问条目之前检查映射的大小是否已更改,仅在检测到大小更改时才创建新数组,则上述方法将很好地工作。另一方面,如果映射频繁更改,则需要在每次访问时重新创建数组,从而创建性能较差的数据结构。