hashmap排序

1.按照键key排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
/**
 * Demo描述:
 * 利用Collections.sort对HashMap里的键值对按照键进行排序
 */
public class sort  {
  private HashMap<String, Integer> mHashMap;
  private List<Map.Entry<String, Integer>> mHashMapEntryList;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    init();
  }
  public Static void main(String[] args)(){
    mHashMap=new HashMap<String, Integer>();
    mHashMap.put("a", 9527);
    mHashMap.put("z", 7);
    mHashMap.put("c", 888);
    mHashMap.put("x", 666);
    mHashMapEntryList=new ArrayList<Map.Entry<String,Integer>>(mHashMap.entrySet());
    
    System.out.println("-----> 排序前的顺序");
    for (int i = 0; i < mHashMapEntryList.size(); i++) {
       System.out.println(mHashMapEntryList.get(i));
    }
    //以下是核心重点
    Collections.sort(mHashMapEntryList, new Comparator<Map.Entry<String,Integer>>() {

      @Override
      public int compare(Map.Entry<String,Integer> firstMapEntry, 
                 Map.Entry<String,Integer> secondMapEntry) {
        return firstMapEntry.getKey().compareTo(secondMapEntry.getKey());
      }
    });
    
    System.out.println("-----> 排序后的顺序");
    for (int i = 0; i < mHashMapEntryList.size(); i++) {
       System.out.println(mHashMapEntryList.get(i));
    }
  }

}
输出结果如下:

-----> 排序前的顺序
a=9527
c=888
x=666
z=7
-----> 排序后的顺序
a=9527
c=888
x=666
z=7


2.按照值value排序只需要把sort函数中的

return firstMapEntry.getKey().compareTo(secondMapEntry.getKey());

改为

return firstMapEntry.getValue().compareTo(secondMapEntry.getValue());即可
这时输出结果如下:
-----> 排序前的顺序
a=9527
c=888
x=666
z=7
-----> 排序后的顺序
z=7
x=666
c=888
a=9527
3.以上的都是按照默认的升序排序的,如果想要降序排序的话,只需要修改collection.sort函数中compare方法:
Collections.sort(mHashMapEntryList, new Comparator<Map.Entry<String,Integer>>() {

      @Override
      public int compare(Map.Entry<String,Integer> firstMapEntry, 
                 Map.Entry<String,Integer> secondMapEntry) {
        return firstMapEntry.getKey().compareTo(secondMapEntry.getKey());
      }
    });
return firstMapEntry.getKey().compareTo(secondMapEntry.getKey());
改为
return secondMapEntry.getKey().compareTo(firstMapEntry.getKey());
就能实现目的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值