HashMap 本身是不可排序的但是要求给HashMap排序
LinkedHashMap是HashMap的子类,是链表结构,是有序的,我们可以返回LinkedHashMap
/**
* 文件名:SortHashMap.java
* 版本信息:Version 1.0
* 日期:2016-8-2
* Copyright talkweb.com.cn Corporation 2016
* 版权所有
*/
package com.zyf.hashmapsort.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;
import com.zyf.hashmapsort.bean.User;
/**
* 类描述:
*
* @version: 1.0
* @author: zyfJava
* @version: 2016-8-2 下午9:17:28
*/
public class SortHashMap {
public static void main(String[] args) {
}
public static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> map) {
// 首先拿到map的键值对集合
Set<Entry<Integer, User>> entrySet = map.entrySet();
// 将set转化成list集合 为什么 因为使用 工具类的排序方法
ArrayList<Entry<Integer, User>> list = new ArrayList<Entry<Integer, User>>(
entrySet);
Collections.sort(list, new Comparator<Entry<Integer, User>>() {
@Override
public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
return o2.getValue().getAge() - o1.getValue().getAge();
}
});
// 创建一个有序的HashMap集合
LinkedHashMap<Integer, User> linkedHashMap =
new LinkedHashMap<Integer, User>();
//将list集合中的数据存储在LinkedHashMap 里
for(Entry<Integer,User> entry:list)
{
linkedHashMap.put(entry.getKey(), entry.getValue());
}
return linkedHashMap;
}
}