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

相关推荐
float_六七11 分钟前
SQL中=与IS的区别:关键用法解析
java·数据库·sql
rit843249911 分钟前
配置Spring框架以连接SQL Server数据库
java·数据库·spring
Tony_yitao1 小时前
9.华为OD机试真题 - 最长的顺子 - 2024E卷 Java
java·华为od·algorithm
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 非凡物流公司电商物流管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
菠菠萝宝3 小时前
【Java手搓RAGFlow】-3- 用户认证与权限管理
java·开发语言·人工智能·llm·openai·qwen·rag
print(未来)5 小时前
C++ 与 C# 的性能比较:选择合适的语言进行高效开发
java·开发语言
王者之座7 小时前
java+maven配置yguard的一次实验
java·spring boot·maven
q***61509 小时前
eclipse配置Spring
java·spring·eclipse
Miraitowa_cheems9 小时前
LeetCode算法日记 - Day 106: 两个字符串的最小ASCII删除和
java·数据结构·算法·leetcode·深度优先