繁体   English   中英

高效的数据结构,带有两个键

[英]Efficient data structure with two keys

我有一个Android应用程序,我在其中使用HashMap来存储容器对象。 在App的过程中,连续访问数据结构。

但是,大约一半的时间,引用不是映射中的Key ,而是来自对象的另一个变量,所以我最终一次又一次地在结构上循环。

是否有一种有效的方法可以在Java中的两个键上建立索引数据结构?

为什么不是两个具有不同键的映射,但两者都指向相同的值?

管理两个映射,其中两组键映射到相同的底层对象集。 将它们包装在具有类似于法线贴图的方法的类中,但在内部搜索两个键,并同步添加和删除。

这是有效的,因为操纵(在最坏的情况下)与管理单个地图成线性比例。

您可以使用一个包含两个键的地图:

Map<Object, Person> personMap = new HashMap<Object, Person>()

Person person = ...
personMap.put(person.getName(), person)
personMap.put(person.getSSN(), person)

然后你可以通过密钥检索。 这当然假设您的密钥用法没有冲突。 如果您的两个键是不同的类类型,那么这是安全的。 如果您的键是相同的类型(示例String ),那么您可能不想使用这两个映射解决方案。

后续:这种方法确实会失去类型安全性,但它只影响put(K, V)putAll(Map<? extends K, ? extends V>) ,因为get(Object)containsKey(Object)总是接受宾语。

因此,有了这个限制,我将包装这个单一的地图或者使用两个地图解决方案(也包装)。

我创建了一个结合了两个变量的关键对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM