多键,链接哈希

时间:2014-08-22 18:11:39

标签: java stack linkedhashmap multikey

我有一组包含两个属性的元素,名称(字符串,不唯一)和 id (整数,唯一)。所有具有相同名称的元素都会根据某些条件存储在一起,排序

插入仅执行一次,因为事先已知所有元素,因此可以轻松完成。删除是根据顺序(第一个)或最终的id完成的。读取值将是最常见(和相关)的操作。

性能是数据结构的首要要求。我认为一个多键,链接数据结构或混合hashmap /堆栈是理想的,但我知道非。我考虑的一些选择是: - 番石榴桌(多个键),但他们没有推/弹行为。 - LinkedHashMaps,但他们只有一把钥匙。

当然我可以使用LinkedHasMaps并迭代删除那些我必须根据id删除元素的情况。我只想知道是否有一些已经实现了高性能的东西。

有什么建议吗?

感谢所有人

1 个答案:

答案 0 :(得分:1)

使用Map<String, TreeSet<Integer>>。这将允许您在同一个键下存储多个项目,并保持整数值的排序。


这个想法是你有一个可以容纳多个值的数据结构的单一键映射。要插入name, value对,您可以执行以下操作:

private Map<String, TreeSet<Integer>> map = new HashMap<>();

public void insert(String name, int value)
{
    if (! map.containsKey(name))
    {
        map.put(name, new TreeSet<Integer>());
    }
    map.get(name).add(value);
}

LinkedHashMap只是跟踪密钥的插入顺序,并按此顺序迭代 - 与使用HashMap相比,它不会提高性能。