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找出重复的元素

相关推荐
long31642 分钟前
构建者设计模式 Builder
java·后端·学习·设计模式
吐个泡泡v1 小时前
Maven 核心命令详解:compile、exec:java、package 与 IDE Reload 机制深度解析
java·ide·maven·mvn compile
天上掉下来个程小白1 小时前
微服务-01.导入黑马商城
java·微服务·架构
Noii.1 小时前
Spring Boot初级概念及自动配置原理
java·spring boot·后端
探索java1 小时前
Tomcat Server 组件原理
java·后端·tomcat
勿在浮沙筑高台1 小时前
无法获取实体类com.example.springdemo2.entity.po.UserPO对应的表名!
java·spring boot·mybatis
用户8356290780512 小时前
Java使用Spire.Doc实现Word转PDF:格式精准的自动化解决方案
java
陆小叁2 小时前
基于Flink CDC实现联系人与标签数据实时同步至ES的实践
java·elasticsearch·flink
CHEN5_022 小时前
【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
java·开发语言
云间月13142 小时前
飞算JavaAI智慧文旅场景实践:从景区管理到游客服务的全链路系统搭建
java·开发语言