lstd.net
当前位置:首页 >> hAshmAp按kEy排序 >>

hAshmAp按kEy排序

final entry removeentryforkey(object key) { int hash = (key == null) ? 0 : hash(key.hashcode()); int i = indexfor(hash, table.length); entry prev = table[i]; entry e = prev; while (e != null) { entry next = e.next; object k; if (e.hash == hash && ((k = e.key) == key

1,如果是只针对key排序,完全不考虑value顺序,则排序如下:Map<String, Integer> map = new HashMap<String, Integer>(); map.put("2015-06-10", 3); map.put("2015-06-09", 2); map.put("2015-06-08", 1); map.put("2015-06-11", 4);

没看懂你想要描述的问题.map 你说的double 是 key 还是 value?map 是键值对的. 无序的集合. 不能根据key或value进行排序.想要排序得循环遍历 map 后 通过 list 有序集合 进行排序.或者可以这样 你自定义一个对象 例如 class a{ public double number; public string value; } list 元素根据 double 大小依次放进去. 这样利用list排序.

HashMap本身是hash散列,做不到你说的排序.TreeMap可以,是二叉树实现,自己实现一个Comparator.

hashmap() 是无序的.如果在有序,建议用 LinkedHashMap, TreeMap. LinkedHashMap好像是按输入顺序输出,而 TreeMap 则是按Key 的顺序输出.如果你的“george,henry,billy,harry”是value ,则用上面那两个吧,排序后输出就行了,如果用hashmap是行不通的 再看看别人怎么说的.

首先Map排序需要自己写一堆算法.其次HashMap是无序的,即使已经排序正确了,取值时也不一定就是按顺序取出的.所以直接排序存放是不可行的.但可以曲线救国的办法,通过Set keys = map.keySet();取得map的key值集合,然后单独给keys来个排序就简单多了,然后按排序后的keys去遍历取值,就OK了.

使用map.entrySet()不需要导入jar entrySet方法是Map自带的方法有不懂的可以追问

在C++中,map是一种常用并且非常好用的数据结构,map会自动按照key排序,但是在有些时候我们需要对map按照每个元素的值进行排序,由于stl的sort函数并不支持对map的按值排序,所以只能另想他法.这里有一种非常方便的方法,是用

keySet是键的集合,Set里面的类型即key的类型entrySet是 键-值 对的集合,Set里面的类型是Map.EntrykeySet()的速度比entrySet()慢了很多使用entrySet则必须将map对象转换为Map.Entry,keySet则不需要

所谓的不排序 是指 不能按照你的要求进行位置调换/存放 并不是说 Set 里面完全没有顺序

bycj.net | ddgw.net | 369-e.com | ydzf.net | knrt.net | 网站首页 | 网站地图
All rights reserved Powered by www.lstd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com