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

相关推荐
李慕婉学姐6 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
奋进的芋圆8 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin8 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model20058 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉9 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国9 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_941882489 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈9 小时前
两天开发完成智能体平台
java·spring·go
alonewolf_999 小时前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹10 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理