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