首页 > 其他分享 >Stream流统计集合元素出现次数并降序

Stream流统计集合元素出现次数并降序

时间:2024-11-15 15:43:16浏览次数:3  
标签:Stream Collectors stream Map 降序 元素 entryList 次数

使用Arrays.stream()结合Collectors.groupingBy()Collectors.counting()来统计数组中每个元素出现个数,按照出现次数降序排列后获取前五个元素及其出现次数的示例代码:

import java.util.*;
import java.util.stream.Collectors;

public class ArrayElementCountTopFive {
    public static void main(String[] args) {
        // 自拟数组
        Integer[] array = {1, 2, 3, 3, 1, 2, 1, 4, 4, 4, 5, 5, 6, 6, 6, 6};

        // 步骤一:使用流操作统计元素出现个数
        Map<Integer, Long> countMap = Arrays.stream(array)
              .collect(Collectors.groupingBy(e -> e, Collectors.counting()));

        // 步骤二:将Map的键值对转换为列表,方便后续排序及获取前五个
        List<Map.Entry<Integer, Long>> entryList = countMap.entrySet().stream()
              .collect(Collectors.toList());

        // 步骤三:使用Comparator自定义比较器对列表进行降序排序
        entryList.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));

        // 步骤四:获取前五个元素及其出现次数
        int topSize = Math.min(5, entryList.size());
        for (int i = 0; i < topSize; i++) {
            Map.Entry<Integer, Long> entry = entryList.get(i);
            System.out.println("元素 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
        }
    }
}

 

标签:Stream,Collectors,stream,Map,降序,元素,entryList,次数
From: https://blog.csdn.net/duehebfbf/article/details/143801084

相关文章

  • Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,
     macm1启动项目,报错,“Unabletoloadio.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,fallbacktosystemdefaults.ThismayresultinincorrectDNSresolutionsonMacOS.”,出现这个问题是因为使用了spring-cloud-starter-gateway依赖,这需要额外安装......
  • 『玩转Streamlit』--数据展示组件
    数据展示组件在Streamlit各类组件中占据了至关重要的地位,它的核心功能是以直观、易于理解的方式展示数据。本次介绍的数据展示组件st.dataframe和st.table,能够将复杂的数据集以表格、图表等形式清晰地呈现出来,使得用户能够快速把握数据的整体情况和细节特征。1.st.dataframes......
  • Java 中 Stream 流的使用方法
    Java中Stream流的使用方法目录一、Stream的概念二、Stream的特点三、Stream的使用步骤1、Stream的创建        1.1、通过Collection对象的stream()或parallelStream()方法       1.1.1、stream()和parallelStream()两个方法的区别      ......
  • express使用morgan+file-stream-rotator实现自定义日志+轮转
    importexpress,{json}from'express';importfsfrom'fs';importpathfrom'path';importmorganfrom'morgan';importFileStreamRotatorfrom'file-stream-rotator';constapp=express();//自动采集一些东西//......
  • 大数据Flink - StreamGraph
    ⭐简单说两句⭐✨正在努力的小新~......
  • Java Lambda表达式与函数式接口和Stream API的常用方法
    JavaLambda表达式常与函数式接口和流(StreamAPI)一起使用,提供了非常强大的方式来处理集合和其他数据结构。以下是一些常用的Lambda表达式方法和它们的用途,特别是在结合java.util.stream.Stream时:1.map()用途:用于将流中的每个元素转换成另一种形式。示例:List<String>name......
  • streamlit run执行报错,Invalid value: File does not exist: XXX.py
    streamlitrun执行报错,Invalidvalue:Filedoesnotexist:XXX.py在终端执行streamlitrunxxx.py的时候报错提示Invalidvalue:Filedoesnotexist:XXX.py网上众说纷纭,但是我个人的解决方法其实非常简单在终端中执行的时候会发现中间多了个warning翻译过来就是:要在......
  • ffmpeg Streamcopy
    Thesimplestpipelinein ffmpeg issingle-stream streamcopy,thatiscopyingone inputelementarystream’spacketswithoutdecoding,filtering,orencodingthem.Asanexample,consideraninputfilecalled INPUT.mkv with3elementarystreams,fromwhi......
  • FFmpeg Stream selection
    ffmpegprovidesthe-mapoptionformanualcontrolofstreamselectionineachoutputfile.Userscanskip-mapandletffmpegperformautomaticstreamselectionasdescribedbelow.The-vn/-an/-sn/-dnoptionscanbeusedtoskipinclusionofvideo,......
  • LeetCode 3014[输入单词需要的最少按键次数I]
    题目链接LeetCode3014[输入单词需要的最少按键次数I]详情实例实例1实例2提示题解思路一圈下来8个字母,每个字母按1次二圈下来16个字母,前8个字母每个按1次,后8个字母,每个按2次三圈下来24个字母,前8个字母每个按1次,中间8个字母,每个按2次,最后8个字母,每个按3次四圈下来......