java 以价值值对的HashMap进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 以价值值对的HashMap进行排序相关的知识,希望对你有一定的参考价值。


import java.util.Comparator;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.TreeMap;

public class SortByValue {

	public static void main(String[] args) {
		
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		map.put("Jim", 20);
		map.put("Xon", 10);
		map.put("Golm", 30);
		map.put("Vim", 70);
		map.put("Din", 40);
		map.put("Eiem", 60);
		
		//创建一个匿名内部类,Comparator的泛型必须和TreeMap的Key一致
		TreeMap<String,Integer> tree = new TreeMap<String,Integer>(new ValueComparator(map));		

		tree.putAll(map);
		
		for (Entry<String,Integer> entry : tree.entrySet()) {
			System.out.println(entry.getKey() + "-" + entry.getValue());
		}

	}
}

//a comparator that compares Strings
class ValueComparator implements Comparator<String>{

	HashMap<String, Integer> map = new HashMap<String, Integer>();

	public ValueComparator(HashMap<String, Integer> map){
		this.map.putAll(map);
	}

	@Override
	public int compare(String s1, String s2) {
		if(map.get(s1) >= map.get(s2)){
			return 1;
		}else{
			return -1;
		}	
	}
}

以上是关于java 以价值值对的HashMap进行排序的主要内容,如果未能解决你的问题,请参考以下文章

java问题,我想在java中存储键值对,以便使用,但是键值对的键和值都有重复元素,使用hashmap会产生覆盖。

HashMap按键排序和按值排序

按值对HashMap进行排序[重复]

Java集合:HashMap底层实现和原理(源码解析)

java8新特性:对map集合排序

如何使用优先队列根据键值对的值进行排序