0

给定一组属性和一个比较器,我想生成一个提供 O(1) 访问的顺序保留哈希码。是否有用于此类事情的 Java 库,还是我必须自己设计散列函数?

4

2 回答 2

2

尝试:

java.util.LinkedHashMap()
于 2013-10-14T16:17:57.253 回答
0

没有一个集合可以做到这一点。根据具体要求,有多个选项可供选择。

为简单起见,我只使用 HashMap 进行查找,当我需要排序的数据时,我会复制这些值并对其进行排序:

 List<?> sorted = new ArrayList<?>(hashMap.values());
 Collections.sort(sorted, Comparator<?>);

这足以满足大多数现实世界的用例。

您还可以编写自己的超级容器,在内部将元素保存在两个集合中,一个 HashMap 和一个 TreeSet。然后,您可以轻松地提供访问方法,以便更好地利用该集合来实现该方法的目的。只需确保添加和删除都会影响包含的集合。

于 2013-10-14T18:08:38.373 回答