hashCode 以及hashMap排序

如题,讲两个相对高级的java知识点。
对于第一个问题:
http://www.cnblogs.com/szlbm/p/5806226.html
这篇文章讲的太好了。实在无法补充什么了。好文要顶。

我只说明一点 hashcode的源代码:

//native   简单地讲,一个Native Method就是一个java调用非java代码的接口。剩下的就不多说了。
public native int hashCode();  



hashMap 排序,我一直想着一个脑筋急转弯,把大象关进冰箱需要几步,3步。

1:从HashMap恢复entry集合 : 

Set<Entry<String,Integer>> mapEntries = aMap.entrySet();

2:mapEntries通过强制类型转换创建LinkedList

List<Entry<String,Integer>> aList = new LinkedList<Entry<String,Integer>>(mapEntries);


3:

Collections.sort(aList, new Comparator<Entry<String,Integer>>() {
      @Override
            public int compare(Entry<String, Integer> ele1,
                 Entry<String, Integer> ele2) {
                   return ele1.getValue().compareTo(ele2.getValue());
            }
        });

此时已经排序好了,只需要把aList放入一个HashMap中,但是HashMap不保持顺序,所以放入一个LinkHashMap中。到此结束。

Map<String,Integer> aMap2 = new LinkedHashMap<String, Integer>();
        for(Entry<String,Integer> entry: aList) {
            aMap2.put(entry.getKey(), entry.getValue());
        } 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值