作者TonyQ (骨头)
看板java
标题Re: [问题] HashMap的问题
时间Tue Nov 20 16:26:41 2007
※ 引述《kians (临兵斗者皆阵列在前)》之铭言:
: 之前提到的pageRank演算法终於完成啦 可喜可贺XD
: 想请问一下各位大大,HashMap内的值要如何按照key或是value来对整个map做排序呢?
: 我是想对value做排序啦,不知道有方可以排序嘛?
: 我只知道可以取出hashmap的value值(型态为Set),然後用collections.sort来排序
: 不过这样就没办法符合我要的结果了(只有value值而已)
: 先谢谢各位大大了
与其要写HashMap然後再另外对EntrySet写Comparator做排序
倒不如用 TreeMap (差别只有implements SortedMap) 搭配Comparator
效能上会好一点(特别是取多次的时候每次取都要sort一次 ,蛮糟的)
TreeMap(Comparator<? super K> c)
Constructs a new, empty map, sorted according to the given
comparator.
至於Comparator的简单介绍,他是用来比较两个元素的大小的,
这样当排序的时候,他才知道 2要比1大 ,所以小到大排序时 1要在2前面,
我们可以知道大部分排序其实都是两个两个比较的结果,
所以定义"比较"的规则就可以决定排序的大小,
而这个规则如果物件本身是Comparable就内建了CompareTo。
如果我们不满意这规则,或者是要比较的物件没有实做Comparable介面,
就可以写一个自订的Comparator,让他自己去比较。
 ̄▽ ̄ 罗唆了一点,现在网路慢到一个极限,我就不修言词了,
总之 去查API 吧,这些API里面都有。
关键字是HashMap /TreeMap/Comparable /Comparator
http://java.sun.com/j2se/1.5.0/docs/api/index.html
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.59.247
1F:推 kians:谢谢你喔 11/25 15:04