import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class SortHashMap {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
// adding keys and values
map.put("Five", 5);
map.put("Six", 6);
map.put("Four", 4);
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
for (Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getValue() + " - " + entry.getKey());
}
System.out.println("====================");
// 从HashMap恢复entry集合
Set<Entry<String, Integer>> set = map.entrySet();
// set创建LinkedList。我们将排序这个链表来解决顺序问题
List<Entry<String, Integer>> list = new LinkedList<Entry<String, Integer>>(set);
// jdk1.8可通过传递链表和自定义比较器来使用sort()方法排序链表,也可使用Collections.sort()
list.sort(new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> ele1, Entry<String, Integer> ele2) {
return ele1.getValue().compareTo(ele2.getValue());
}
});
Map<String, Integer> map2 = new LinkedHashMap<String, Integer>();
for (Entry<String, Integer> entry : list) {
map2.put(entry.getKey(), entry.getValue());
}
for (Entry<String, Integer> entry : map2.entrySet()) {
System.out.println(entry.getValue() + " - " + entry.getKey());
}
}
}
HashMap按value排序
最新推荐文章于 2024-08-05 19:18:33 发布