[英]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.