Map按value降序并统计

java 复制代码
package com.ldj.cloud.user.demo;

import java.util.*;

/**
 * User: ldj
 * Date: 2024/5/11
 * Time: 10:03
 * Description: map按value降序
 */
public class Tr {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("c");
        list.add("c");

        //去重分类
        Set<String> set = new HashSet<>(list);

        //为每一种元素,分配一个箩筐
        Map<String, Integer> map = new LinkedHashMap<>();
        set.forEach(ele -> {
            map.put(ele, 0);
        });

        //挑拣元素,如果同一种元素,放入对映的箩筐(+1)
        list.forEach((item -> {
            if (map.containsKey(item)) {
                map.put(item, map.get(item) + 1);
            }
        }));

        System.out.println(map);

        //map降序(重要)
        List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());
        entries.sort((o1, o2) -> o2.getValue() - o1.getValue());
        
        //找到数量最多那个元素
        System.out.println(entries);
        System.out.println(entries.get(0).getKey());
        System.out.println(entries.get(0).getValue());
    }

}

代码优化

java 复制代码
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("c");
        list.add("c");

        //去重分类 (伪代码)Rset当Redis的set
        Set<String> set = new HashSet<>(list);
        Map<String, Integer> map = new LinkedHashMap<>();

        list.forEach(item -> {
            map.put(item, map.get(item) != null ? (map.get(item) + 1) : 1);
        });

        System.out.println(map);
    }

借助Redis找出重复的元素

相关推荐
Nonoas5 小时前
动态代理:发布订阅的高级玩法
java·ide·intellij-idea
程序员-周李斌5 小时前
Java 死锁
java·开发语言·后端
皮皮林5516 小时前
Prometheus+Grafana,打造强大的监控与可视化平台
java
JasmineWr6 小时前
CompletableFuture相关问题
java·开发语言
零雲6 小时前
java面试:知道java的反射机制吗
java·开发语言·面试
java1234_小锋7 小时前
Java进程占用的内存有哪些部分?
java
sxlishaobin7 小时前
Spring Bean生命周期详解
java·后端·spring
曹牧7 小时前
Java:Assert.isTrue()
java·前端·数据库
梦里小白龙7 小时前
JAVA 策略模式+工厂模式
java·开发语言·策略模式
你不是我我8 小时前
【Java 开发日记】我们来说一说 Redis 主从复制的原理及作用
java·redis·github