java的hashmap排序_java 中HashMap排序

一、按key值排序

假设HashMap存储的键-值对为(String,Integer),按key排序可以调用JDK函数sort(默认的按字典升序):

Set keySet = map.keySet();

Collections.sort(keySet);

for(Iterator ite = keySet.iterator(); ite.hasNext();) {

String temp = ite.next();

System.out.println("key-value: "+temp+","+map.getValue(temp);

}

如果想要按字典的降序排列,则需改写sort方法里面的比较器Comparator:

Collections.sort(keySet, new Comparator() {

public int compare(Object o1, Object o2) {

if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString())

return 1;

if(Integer.parseInt(o1.toString())==Integer.parseInt(o2.toString())

return 0;

else

return -1;

}

});

二、按value值排序

1)方法一:用两个list链表实现

List keyList = new LinkedList();

keyList.addAll(map.keySet());

List valueList = new LinkedList();

valueList.addAll(map.values());

for(int i=0; i

for(int j=i+1; j

if(valueList.get(j)>valueList.get(i)) {

valueList.set(j, valueList.get(i));

valueList.set(i, valueList.get(j));

//同样调整对应的key值

keyList.set(j, keyList.get(i));

keyList.set(i, kyeList.get(j));

}

}

然后依次把key值和对应value值重新装入HashMap即可。

2)方法二:改写JDK提供的Comparator接口方法compare

List> list = new LinkedList>();

list.addAll(map.entrySet());

Collections.sort(list, new Comparator>() {

public int compare(Map.Entry obj1, Map.Entry obj2) {//从高往低排序

if(Integer.parseInt(obj1.getValue().toString())

return 1;

if(Integer.parseInt(obj1.getValue().toString())==Integer.parseInt(obj2.getValue().toString()))

return 0;

else

return -1;

}

});

for(Iterator> ite = list.iterator(); ite.hasNext();) {

Map.Entry map = ite.next();

System.out.println("key-value: " + map.getKey() + "," + map.getValue());

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值