Java-java中有没有某种map,能够直接对key-value的value实现排序的?
举例说明,比如TreeMap,有原生方法取出精确小于某个key值的最大key值。我想这么实现有个好处就是key值通常是不能重复的,这样可以精确的唯一取出,要么可以null。但是项目中使用键值对的时候,经常是用key作为某种名字,用value表示某种值,而这某种值是可以重复的也是需要排序的。有没有某种集合类能够实现对value排序的?是否稳定排序没要求,多谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你可以创建两个Map,一个Map可以是HashMap存储Key=name,Value=score,再创建一个TreeMap反向存储Key=score,Value=List(链表),List存储name。
在java中实现了Map借口的map只有AbstractMap, ConcurrentHashMap, EnumMap, HashMap, IdentityHashMap, LinkedHashMap, TreeMap, WeakHashMap!没有哪一个提供这样的功能。
我认为没有。
在Java中,Map指的就是映射键值的这种抽象数据类型(ADT),它本身支持的操作就是get(key), put(key, value)和remove(key)。虽然根据是否维护Key的顺序,JCF提供了HashMap(无序)和TreeMap(有序)两种实现,但所有操作也都是通过Key来查找的。
每种数据结构都有自己的设计目标和试用场景。快速的根据某个键查到对应的对象,是map的目标,你不能强求用map来实现value排序。
其实很简单
封装一个对象里面包含了key和value
重写comparator
利用value来判断就可以了
其实利用treeset就可以实现
这个两年前就写过了
如果非要这样做的话 也是可以的 自己写一个提供一个通过value(value需要实现comparable interface)排序遍历的接口 然后去实现它就可以了 但这样的话 正如楼上说的 每一种数据结构都有他自己本身的含义在里面 比如队列java本身的实现就是在数组的基础上 但正因为其先进先出的性质决定了队列是比数组在一定含义上更规范更好用 map也是一样的, 快速的根据某个键查到对应的对象,是map的目标,你不能强求用map来实现value排序。