TreeMap 按值排序
使用 Java 的 TreeMap 时,按键的默认自然顺序排序可能并不总是足够的。本文探讨了一种根据值对 TreeMap 进行排序的替代方法。
问题描述:
您寻求一种设计比较器的方法,该比较器允许您对TreeMap 按其值而不是默认键排序。初始尝试返回错误,提示有关将 Map.Entry 传递给比较器的问题。
解决方案:
虽然无法直接按值对 TreeMap 进行排序,使用外部集合来执行此任务是可行的。通过提取 Map.entrySet(),您可以使用自定义比较器根据条目的值对条目进行排序。
提供的通用方法,entriesSortedByValues(),通过创建 Map.Entry 对象的 SortedSet 来实现此目的。该方法要求映射值是可比较的,并应用比较器来比较这些值以确定条目
实现:
使用:
警告:
修改排序集或其中的 Map.Entry 可能会导致意外结果,因为这不是原始地图的“视图”。此外,请注意对 Integer 对象使用 ==,因为它执行引用相等,而不是值相等。
以上是如何按值而不是键对 Java TreeMap 进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!