jdk1.8-map根据value排序,取前n位(及简)

public static void main(String[] args) {
    Map<String,Integer> mapRepeat = new HashMap<>();

    mapRepeat.put("aa", 1);
    mapRepeat.put("bb", 45);
    mapRepeat.put("cc", 32);
    mapRepeat.put("dd", 226);
    mapRepeat.put("ee", 16);
    mapRepeat.put("ff", 320);
    mapRepeat.put("gg", 99);


    Map<String,Integer> mapRepeat1 = new HashMap<>();
    mapRepeat1.put("aa", 1);
    mapRepeat1.put("bb", 5);
//.sorted标签,对map根据value排序
//.map方法把map的key转成set
//.subList取前n位,下图(0,5位)

//.retainAll(拿key-set,去与map碰撞),判断交集并覆盖之前的list,取出相交个数

//list的value就是相交的 key,如需value取出即可

    List<String> mobileList = mapRepeat.entrySet().stream()
            .sorted((Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) -> o2.getValue() - o1.getValue())
            .map(entry -> entry.getKey()).collect(Collectors.toList())
            .subList(0, 5);
    mobileList.retainAll(mapRepeat1.keySet());

    System.out.println(JSON.toJSONString(mobileList.size()));
}
阅读更多

没有更多推荐了,返回首页