我创建了一个TreeMap,它通过我传递给构造函数的Comparator按值排序。
我如何按照比较器创建的顺序迭代TreeMap? (不是通过键/值的升序值)
答案 0 :(得分:1)
你不能使用TreeMap
。
workarround将使用LinkedHashMap
来保留广告订单
并且,当您想要按Comparator
排序地图时,请创建一个
带TreeMap
的{{1}}的实例并将其中的所有元素都包含在Comparator
中。
LinkedHashMap
答案 1 :(得分:0)
TreeMap
是SortedMap
接口的实现,
根据其键的自然顺序或通常在有序地图创建时提供的比较器进行排序。 根据{{3}}
考虑使用LinkedHashMap
来保留项目插入顺序。
答案 2 :(得分:0)
我如何按照创建的顺序迭代TreeMap 比较? (不是通过键/值的升序值)
比较者不会创建任何订单!它只能回答问题是它比较的两个对象是相等的(返回0),或者第一个大于第二个(返回值大于0),或者第一个小于第二个(返回值小于0)。因此,当您将比较器传递给TreeMap时,您将给容器(引擎盖下的红黑树)一个函数,该函数决定使用指定键添加新元素的二叉树子树(如在简单二叉树中,如果key小于节点它将被添加到左子树,如果大于右,如果等于指定键下的值将被替换(TreeMap不允许重复键))。
当你迭代TreeMap时,你会迭代元素的升序(自然)排序(使用比较器添加到这个树中)