【发布时间】:2015-12-28 17:17:42
【问题描述】:
我正在尝试创建一个排序映射 Map<Integer,Set<Integer>>,它根据值集的 size() 对元素进行排序。
实际上,这是一个节点到连接到该节点的其他节点的映射。我想快速(O(logn))访问具有最多边缘的节点不必每次都排序。
例如顺序应该是:
3 => {1,2,4,5}
12 => {1,2,3}
14 => {3,2,3}
65 => {3,8}
6 => {2}
2 => {5}
由于TreeMap 不会这样做,因为我无法根据值进行排序,所以我可能需要滚动一些自定义内容。
编辑: Set 的大小确实可能会发生变化,这可能会使事情变得更加复杂
实现这一目标的最简单方法是什么?
【问题讨论】:
-
你是什么意思
TreeMap不会做?您可以使用自定义比较器。 -
@markspace 比较器只允许我按键排序(除非我想采用另一个丑陋/不可靠的黑客/解决方案)
-
反转键和值。你说你要按尺寸查找对吧?
-
所以使用两张地图。一个按 Set#size 排序,一个按节点 ID 索引。这是最简单的方法。
-
@KonstantinosChalkias 是的,现在我考虑到它确实可能会改变并且可能使事情变得更加复杂
标签: java dictionary java-7 treemap sortedmap