精华内容
下载资源
问答
  • 对mapvalue进行排序

    2019-07-10 16:31:32
    // 对mapvalue进行排序 List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>( XzcfMap.entrySet()); Collections.sort(list, new Comparator<...
    		// 对map的value进行排序
    		List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(
    				XzcfMap.entrySet());
    		Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
    			// 升序排序
    			public int compare(Entry<String, String> o1,
    					Entry<String, String> o2) {
    				return o1.getValue().compareTo(o2.getValue());
    			}
     
    		});

     

    展开全文
  • 实现方法:如果想要对map中的value进行排序,先把map的元素按piar形式插入到vector中,再vecotr进行排序(用一个自定义的比较函数),这样就可以实现对mapvalue排序了。 以下代码实现了按照map中的value进行排序的...

    实现方法:如果想要对map中元素按照value进行排序,先把map的元素按pair形式插入到vector中,再对vecotr进行排序(用一个自定义的比较函数),这样就可以实现对map的value排序了。

    以下代码实现了按照map中的value进行排序的功能,还给出了遍历map的几种方式,仅供参考哈,各位。

    提示:对于map的key-value结构来说,如果key没有重载“<”操作符,是无法插入成功的。因此,对于自定义类型的key,必须实现"<"操作符重载

    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<cstdlib>
    #include<vector>
    #include<algorithm>
    #include<map>
    using namespace std;
    
    
    
    typedef struct my_map_key
    {
    	int v1;
    	int v2;
    
    	// 基于v2的大小进行比较
    	bool operator<(my_map_key const& t) const
    	{
    		if (this->v2 > t.v2)
    		{
    			return true;
    		}
    		return false;	
    	}
    }TEST;
    
    // 自定义map打印函数:使用for_each遍历打印
    inline void Display(map<my_map_key, int>::value_type & v)
    {
    	cout << v.second << endl;
    }
    
    // 按照value进行比较
    typedef pair<my_map_key, int> PAIR;
    bool cmp_by_value(const PAIR& v1, const PAIR & v2)
    {
    	return v1.second < v2.second;
    }
    
    // 按照value进行比较
    struct cmpByValue
    {
    	bool operator()(const PAIR& v1, const PAIR& v2)
    	{
    		return v1.second < v2.second;
    	}
    };
    
    int main()
    {
    	// 提示:对于map来说,如果key没有重载<操作符,是无法插入成功的。因此,对于自定义类型的key,必须实现<操作符重载
    	map<my_map_key, int> m;
    	
    	// 对map中进行元素的插入
    	my_map_key t;
    	t.v1 = 10;
    	t.v2 = 3;
    	m.insert(pair<my_map_key, int>(t,1));
    	
    	t.v2 = -3;
    	m.insert(pair<my_map_key, int>(t, 2));
    
    	t.v2 = -2;
    	m.insert(pair<my_map_key, int>(t, 7));
    
    	t.v2 = 9;
    	m.insert(pair<my_map_key, int>(t, 8));
    
    	t.v2 = 32;
    	m.insert(pair<my_map_key, int>(t, 3));
    
    	t.v2 = 13;
    	m.insert(pair<my_map_key, int>(t, 4));
    
    	t.v2 = 112;
    	m.insert(pair<my_map_key, int>(t, 5));
    
    	t.v2 = 44;
    	m.insert(pair<my_map_key, int>(t, 6));
    
    	t.v2 = 3;
    	m.insert(pair<my_map_key, int>(t, 2));
    
    
    	// 实现按照map中的value进行排序
    
    
    	// 第一步:将map中的元素放入到vector中
    	vector<PAIR> v(m.begin(), m.end());
    	// 第二步:使用sort函数对vecotr中的元素进行排序,自定义比较函数或结构体
    	sort(v.begin(), v.end(), cmpByValue());
    	//sort(v.begin(), v.end(), cmp_by_value);	// 这个也可以的
    
    	// 打印输出 for-loop-scope 特性
    	for (auto i : v)
    	{
    		cout << "m.second = " << i.second   << "    m.first.v2 = " << i.first.v2  << endl;
    	}
    
    	// 题外话:遍历 map 的两种方式
    	/*for_each(m.begin(), m.end(), Display);
    	
    	for (auto iter = m.begin(); iter != m.end(); ++iter)
    	{
    		// 自定义内容 ......
    	}*/
    
    	return 0;
    }
    

    以下是程序的输出:

    m.second = 1    m.first.v2 = 3
    m.second = 2    m.first.v2 = -3
    m.second = 3    m.first.v2 = 32
    m.second = 4    m.first.v2 = 13
    m.second = 5    m.first.v2 = 112
    m.second = 6    m.first.v2 = 44
    m.second = 7    m.first.v2 = -2
    m.second = 8    m.first.v2 = 9
    

    感谢阅读

    展开全文
  • 对Map的key和value进行排序
  • java8对mapvalue进行排序## 标题 Map<String,Long> map = tmp.stream().collect(Collectors.groupingBy(a -> a,Collectors.counting())); // ArrayList<Map.Entry<String,Long>...

    java8对map按value进行排序## 标题

    
                Map<String,Long> map = tmp.stream().collect(Collectors.groupingBy(a -> a,Collectors.counting()));
    
    //            ArrayList<Map.Entry<String,Long>> arrayList = new ArrayList<Map.Entry<String, Long>>(map.entrySet());
    //
    //            Collections.sort(arrayList, new Comparator<Map.Entry<String, Long>>() {
    //                @Override
    //                public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2) {
    //                    return ((o2.getValue() - o1.getValue() == 0) ? 0 : (o2.getValue() - o1.getValue() > 0) ? 1 : -1);
    //                }
    //            });
    //
    //            System.out.println(arrayList.get(0));
                Map<String,Long> resMap = new LinkedHashMap<>();
                map.entrySet().stream().sorted(Map.Entry.<String,Long>comparingByValue().reversed())
                        .forEachOrdered(e -> resMap.put(e.getKey(),e.getValue()));
                System.out.println(resMap.size());```
     先将list中的字符串进行分组统计放入map中,最后对map按照value倒序排序;
    
    展开全文
  • JAVA对MapValue排序

    千次阅读 2018-12-29 11:07:34
    JAVA对MapValue排序 在java实际编程中经常需要使用到HashMap,TreeMap以及LinkedHashMap来保存键值,而java中对MapValue排序并没有已经写好的方法,需要自己实现。 作者使用了自定义类以及Collections包的sort...

    JAVA对Map按Value值排序

    在java实际编程中经常需要使用到HashMap,TreeMap以及LinkedHashMap来保存键值对,而java中对Map按Value排序并没有已经写好的方法,需要自己实现。
    作者使用了自定义类以及Collections包的sort()方法实现Map的按值排序,具体代码如下:

    1. sortMap()
      输入参数为需要排序的Map,输出为LinkedHashMap类型,因为需要保证顺序。
    	public static LinkedHashMap<String, Integer> sortMap(Map<String, Integer> map){
    		class MapClass{															//自定义类保存键值对
    			private String key;
    			private int value;
    			
    			public MapClass(String key, int value) {
    				super();
    				this.key = key;
    				this.value = value;
    			}
    
    			public String getKey() {
    				return key;
    			}
    
    			public int getValue() {
    				return value;
    			}
    			
    			
    		}
    		class MapSortMethod implements Comparator<MapClass>{					//为自定义类实现排序方法
    			@Override
    			public int compare(MapClass o1, MapClass o2) {
    				int result = Integer.compare(o1.getValue(), o2.getValue());		//按值大小升序排列
    				//int result = Integer.compare(o2.getValue(), o1.getValue());	//按值大小降序排列	
    				if(result != 0)
    					return result;		
    				return o1.getKey().compareTo(o2.getKey());						//值相同时按键字典顺序排列
    			}
    		}
    		
    		ArrayList<MapClass> mapclass = new ArrayList<MapClass>();				//以ArrayList保存自定义类
    		for(String k: map.keySet())
    			mapclass.add(new MapClass(k, map.get(k)));
    		Collections.sort(mapclass, new MapSortMethod());						//使用Collections.sort()方法,第二个参数为自定义排序方法,需要实现Comparator接口
    						
    		LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
    		for(MapClass m: mapclass)
    			sortedMap.put(m.getKey(), m.getValue());
    		return sortedMap;														//用LinkedHashMap返回排好序的Map
    	}
    
    1. 测试
    	public static void main(String[] args) {
    		HashMap<String, Integer> map = new HashMap<String, Integer>();
    		map.put("math", 93);
    		map.put("english", 88);
    		map.put("chinese", 99);
    		map.put("biology", 72);
    		System.out.println(sortMap(map));
    	}
    

    输出结果如下:
    在这里插入图片描述
    注: 本文中使用到的依赖包如下:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.Map;
    
    展开全文
  • 最近开始并长期开始使用Go进行开发,第一个主研服务中有关于对mapvalue排序的,我自己通过实现冒泡排序给解决了,但是在value相等时,会出现map key乱序的情况。后来优化key进行排序后这个问题才算真正意义的...
  • 怎么对map中的value进行排序

    千次阅读 2019-07-26 16:53:11
    1.对map中的value进行倒序排序 map.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue())).forEach(System.out::println); 2.对map中的value进行正向排序 map.entrySet().stream...
  • C++按mapvalue进行排序

    千次阅读 2017-01-04 19:45:10
    有时候,我们需要对mapvalue进行排序,根据value的大小顺序获得key的序列。比较简单的方法就是,重新定义一个新的map,新map的key和value正好是原来mapvalue和key,这样新的map就按照原来mapvalue进行排序。...
  • 对mapvalue进行排序的方法

    千次阅读 2016-05-13 16:12:08
    对mapvalue进行排序的方法,注意思路,以及CMPBYVALUE的用法 map按键排序和按值排序前几天做了一个关于字符串的题,题目要求寻找一个字符串中出现最多的子串是哪一个,没想到什么很有技巧的想法,于是就打算遍历...
  • kotlin中HashMap的排序和java中有些不同 java 重写Comparator Map<String, String> map = new HashMap<String, String>(); map.put("c", "ccccc"); map.put("a", "aaaaa"); map.put("b", "bbbbb")...
  • 对Map中的value进行排序

    千次阅读 2017-06-18 23:48:43
    对Map中的value进行排序,因为不同的值的比较方式不同,所以需要该方法中的compare进行相应的调整,修改为value中对应的数据类型的比较方式,如果要调整升降序的话,只要修改compare方法中的最后返回的value的比较...
  • Java的MapValue字段进行排序

    千次阅读 2019-02-15 19:41:01
    构造TreeMap可以指定Comparator,但是不能对value字段进行排序。如果有需求对Value字段排序,例如map存放的是单词,单词出现次数,怎么按单词次数排序呢?  可以先将map中的key-value放入list,然后用Collections....
  • NULL 博文链接:https://sakajiaofu.iteye.com/blog/1998474
  • 使用Comparator根据Mapvalue进行排序

    千次阅读 2019-12-11 11:49:25
    在写推荐系统时,使用到余弦相似度算法用户进行推荐,里面需要根据value推荐由相似度高到底排序,所以撸了一个实现Comparator对mapvalue进行排序的工具方法。 public static Map<String, Float> ...
  • 实现思路:将Map key,value模式转换为List key=value模式,然后利用冒泡排序进行排序 Map<Long, Double> historyBuy = new HashMap<Long, Double>(); // 获得map集合 List<Map.Entry<Long,...
  • 对map中的value进行排序

    千次阅读 2012-04-22 12:24:19
    //对map中的value进行排序 public class SortMapValue { public static void main(String[] args) { Map map=new LinkedHashMap(); map.put("aaa", 45); map.put("e", 2); map.put("ww", 556); map.put(...
  • Java根据Mapvalue进行排序

    千次阅读 2021-03-29 15:31:27
    map变成一个List,然后实现Comparator接口中的compare方法进行排序 Map<String, Integer> map = new HashMap<>(); map.put("zym9", 9); map.put("zym6", 6); map.put("zym-1", -1); map.put("zym3", 3)...
  • Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 2、put数据 3、通过ArrayList构造函数把map.entrySet()转换成list List<Map.Entry<Integer, Integer>> mappingList = ...
  • Map根据value进行排序

    千次阅读 2011-06-24 17:55:00
    今天需要将mapvalue进行排序,Google到不少解决办法,现将借鉴的解决办法记录如下: Java-->Map map=new HashMap();//map.put("first",100);//map.put("second",300);//map.put("third",200);List> orderList=new...
  • 今天在做笔试题的时候发现需要根据value对map进行排序,通过查资料发现其基本思路是通过讲map中的键值转化存储到vector中进行排序得到的。 代码如下:#include #include #include<map> #include #include...
  • 根据value对map进行排序
  • Map按照Value进行排序

    万次阅读 多人点赞 2013-10-21 09:47:32
    1 TreeMap按照value进行排序 public class Testing { public static void main(String[] args) { HashMap map = new HashMap(); ValueComparator bvc = new ValueComparator(map);
  • java根据key或value对Map进行排序

    千次阅读 2021-04-22 17:58:18
    根据key排序 java.util包下的TreeMap可以满足此类需求,直接调用TreeMap的构造函数传入我们自己定义的比较器即可 public static Map<String, String> sortMapByKey(Map<String, String> map) { if (map...
  • ... import java.util.Map; /** * jdk 8 排序工具类 * @author wangsong * @mail 1720696548@qq.com * @date 2020/9/14 0014 14:19 * @version 1.0.0 */ public class Java8MapSort { /**
  • 项目中遇到一个对map[int32]int32根据value对key进行排序(从大到小)的场景,一个很小的问题,思路是新建一个数组,先把每个key加进去,然后再进行排序。 func sortMap(s map[int32]int32) []int32 { var rank []int...
  • 如何对map中的value进行排序

    千次阅读 2015-10-19 15:31:33
    package com.demo.map; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List;
  • map内部是按照hash算法存储的,但如果能对map排序在某些时候还是有用的,下面实现对map按照value升序排序,实现对map按照key排序,大家参考使用吧
  • list中有map,根据mapvalue进行排序

    千次阅读 2018-08-13 14:58:31
    List中有map,需要对map中的key进行从小到大排序,使用lambda表达式可以轻松实现。 Collections.sort(list, (map1, map2) -&gt; { Integer key1= (Integer) map1.get("需要排序的key"); Integer ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 215,522
精华内容 86,208
关键字:

对map的value进行排序