Java中,Map最简单的实现就是HashMap,他默认是按照键来排序,有时候,我们可能会有一种需求,就是需要按照值来排序。这就需要做个小算法。
整个算法的思路,其实很简单,就是遍历value集合,按照值的大小排序,然后组成新的Map映射。似乎有点简单,但是又有点难度,难的地方在于,Map是一个Entry<K,V>集合,单纯的比较value大小,很简单,但是要带上键,似乎有点麻烦。
这个比较,需要考虑按照对象来比较。对象比较,就可以考虑按照对象的属性来比较,这样问题就解决了。
show me the code:
package com.xxx.huali.hualitest;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
public class MapValueSortDemo {
/**
* { <1:10>,<4:100>,<2:5>,<3:3> } -> [<3:3>,<2:5>,<1:10>,<4:100>] -> {<3:3>,<2:5>,<1:10>,<4:100>}
* @param <K>
* @param <V>
* @param map
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <K extends Comparable,V extends Comparable> Map&l