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());
就能实现目的