Map中按value值排序

大家都知道,在java中的集合Map中按键值key排序比较简单,只需引用集合TreeMap即可,可是怎样实现按value值排序呢?下面我们来测试一下:

public class TestHashMap {
	public static void main(String[] args) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("zhangsan", 1);
		map.put("lisi", 2);
		map.put("wangwu", 0);

		List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
		Collections.sort(list, new Comparator<Map.Entry<String,Integer>>() {

			public int compare(Map.Entry<String,Integer> o1, Map.Entry<String,Integer> o2) {
				Integer one = o1.getValue();
				Integer two = o2.getValue();
				return two.compareTo(one);
			}

		});

		for(Map.Entry<String,Integer> entry : list)
			System.out.println(entry.getKey()+":"+entry.getValue());
	}
}

输出结果为:

lisi:2

zhangsan:1

wangwu:0

结果即是以value值从大到小进行排序的!

Map中按value值排序

时间: 2024-08-26 08:38:09

Map中按value值排序的相关文章

jsp页面使用el 按key获取map中的对应值

jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/details/18517359 jsp页面中的代码: <script type="text/javascript"> var msgTip = "${msgs['loginError']}"; alert(msgTip); </script> 注意

获取map中根据key进行排序的value数据

今天做的项目中遇到了获取map中根据key进行排序的value数据,key中保存的内容是字符串类型.      map的知识点好久没用有点生疏,不知道怎么去使用.看看之前同事写的map根据key排序的代码,发现他是先把key都取出来封装到一个List中,然后用Collections.sort方法对List排序,按照排完序的顺序去除value顺序加入到一个新的List中.感觉此种方式的循环次数太多,于是上网找找能不能直接排序的方法,看见有人写直接保存到TreeMap中的数据就能实现按照进行排序的功

【Java必修课】通过Value获取Map中的键值Key的四种方法

1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value值,求Key值. 本文将用实例介绍四种方法,通过传入Value值,获取得到Key值. 2 四种方法 2.1 循环法 循环法就是通过遍历Map里的Entry,一个个比较,把符合条件的找出来.会有三种情况: (1)找到一个值 (2)找到多个值 (3)找不到 具体代码如下: @Test public void lo

Golang对map中的key进行排序

package main import ( "fmt" "sort" ) func main() { //首先生成26个字母充当map中的key var a = 'a' var m map[string]int = make(map[string]int) for i := 0; i < 26; i++ { // fmt.Printf("%c", a) //%c 是输出字符 key := fmt.Sprintf("%c"

对list中map中的key值进行排序

//对时间戳进行排序 获取最新的mapList<Map<String, Object>> dateList = new ArrayList<Map<String, Object>>(); Map<String, Object> paramsValue = new HashMap<String, Object>(); paramsValue.put("userId", user.getId()); List<S

根据Value对Map中的对象进行排序

背景 SortedMap的实现类TreeMap可以按自然顺序或自定义顺序遍历键(key),有时我们需要根据值(Value)进行排序,本文提供了一种简单实现思路. 实现 Comparator接口 使用Value排序时,仍然使用TreeMap实现类,只不过需要在TreeMap的构造函数中引入Comparator实现. TreeMap构造器 ValueComparator是Comparator接口的实现,该实现包含了一个普通的Map对象作为成员变量,并在compare方法中做了一点手脚.即在compa

stream根据map中的一个字段排序

org = org.stream().sorted(Comparator.comparing(SynchronousDataService::sort2)).collect(Collectors.toList());// 排序 private static String sort2(Map<String, Object> a) {  return (String) a.get("uri"); } 原文地址:https://www.cnblogs.com/sikuaiwu/p

Go语言 遍历map中的键值对

map 的遍历过程使用 for range 循环完成,代码如下: package main import "fmt" func main() { mapNum := make(map[string]int) mapNum["key1"] = 1 mapNum["key2"] = 2 mapNum["key3"] = 3 mapNum["key4"] = 4 //输出map集合key和value for k,

如何在STL的map中使用结构体作为键值

这里首先给出容器map的原型: template < class Key, class T, class Compare = less<Key>, class Alloc = alloc> class map{ ... } 可以看到模板参数一共有四个,第一个就是Key,即键:第二个就是值:第四个就是空间配置器,默认使用alloc(随STL版本不同而不同).那么第三个是啥? 我们知道,map的底层数据结构,其实是树,更确切的说,是一个RB-tree(红黑树).RB-tree树在进行插