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,可以正排序也可以逆排序
转载请注明原文地址: https://lol.8miu.com/read-14276.html