1.全部代码:
public class TestHashMap {
public static void main(String[] args) {
HashMap<Integer,User> hashMap=new HashMap<Integer, User>();
User user=new User();
user.setAge(23);
user.setName("name1");
hashMap.put(1,user);
User user2=new User();
user2.setAge(24);
user2.setName("name2");
hashMap.put(2,user2);
User user3=new User();
user3.setAge(22);
user3.setName("name3");
hashMap.put(3,user3);
User user4=new User();
user4.setAge(21);
user4.setName("name4");
hashMap.put(4,user4);
System.out.println(hashMap);
HashMap<Integer,User> sortHashMap=sortHashMap(hashMap);
System.out.println("------------");
System.out.println(sortHashMap);
}
private static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> hashMap) {
LinkedHashMap<Integer,User> newHashMap=new LinkedHashMap<Integer, User>();
Set<Map.Entry<Integer, User>> entrySet = hashMap.entrySet();
ArrayList<Map.Entry<Integer,User>> list=new ArrayList<Map.Entry<Integer, User>>(entrySet);
Collections.sort(list, new Comparator<Map.Entry<Integer, User>>() {
public int compare(Map.Entry<Integer, User> o1, Map.Entry<Integer, User> o2) {
return o2.getValue().getAge()-o1.getValue().getAge();
}
});
for (int i = 0; i < list.size(); i++) {
Map.Entry<Integer, User> entry = list.get(i);
newHashMap.put(entry.getKey(),entry.getValue());
}
return newHashMap;
}
}
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.图解
3.解释:
- 印象中只有linkeHashMap是有序的
- 排序就只有集合了,就想到的arrayList
- 集合排序:callections,可以正排序也可以逆排序