Java中HashMap排序和遍历 .

<div id="article_content" class="article_content">
[b]HashMap排序[/b]

1、按照key排序

对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲。

这种方案,使用hashmap进行创建和添加,如果需要按照key排序,则可以将该hashmap作为参数传递到new TreeMap(hashmap),则可以完成按照key的排序:


<div class="dp-highlighter">
<p class="java" style="display: none;" title="java Map排序(按key和按value)">TreeMap treemap = new TreeMap(hashmap);

?

2、按照value排序

使用hashmap,然后添加比较器,进行排序

?? Map<String,?Integer>?keyfreqs?=?<span class="keyword">[b]<span style="color: #7f0055;">new</span>[/b]</span>?HashMap<String,?Integer>();???

?? ArrayList<Entry<String,Integer>>?l?=?<span class="keyword">[b]<span style="color: #7f0055;">new</span>[/b]</span>?ArrayList<Entry<String,Integer>>(keyfreqs.entrySet());?? ??

?? Collections.sort(l,?<span class="keyword">[b]<span style="color: #7f0055;">new</span>[/b]</span>?Comparator<Map.Entry<String,?Integer>>()?{?? ??

<span class="keyword"><span style="color: #7f0055;"><span style="color: #000000;">?? </span>[b]public[/b]</span></span>?<span class="keyword">[b]<span style="color: #7f0055;">int</span>[/b]</span>?compare(Map.Entry<String,?Integer>?o1,?Map.Entry<String,?Integer>?o2)?{?? ??

<span class="keyword"><span style="color: #7f0055;"><span style="color: #000000;">??????????????? </span>[b]return[/b]</span></span>?(o2.getValue()?-?o1.getValue());?????}?????}); ??

<span class="keyword">[b]<span style="color: #7f0055;">?? </span>[/b]</span>

<span class="keyword">[b]<span style="color: #7f0055;">?? for</span>[/b]</span>(Entry<String,Integer>?e?:?l)?{ ??

?????? System.out.println(e.getKey()?+?<span class="string"><span style="color: #0000ff;">"::::"</span></span>?+?e.getValue()); ??

????? }??

?

[b]HashMap遍历[/b]

在java中使用HashMap是主要有两种遍历方法,代码如下:

第一种:


<p class="alt">Iterator?iterator?=?hashmap.keySet().iterator();

<p class="alt">???? Object?value?=?hashmap.get(iterator.next());

<p class="alt">?
<span>第二种:</span>

<span><span>HashMap?hashmap?=?</span><span class="keyword">new</span><span>?HashMap();</span> </span>

<span><span>Iterator?iterator?=?hashmap.entrySet().iterator();???????????</span> </span>

<span><span class="keyword">while</span><span>?(iterator?.hasNext())?{</span> </span>

<span><span>??? Entry?entry?=?(Entry)?iterator?.next();</span> </span>

<span>??? <span>Object?value=?entry.getValue();</span> </span>

<span>??? <span>Object?key?=entry.getKey();</span> </span>

<span><span>?? }</span></span>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值