java8-lambda-list中字符出现字数的统计
@Test
public void testStringCount(){
List<String> moidList1 = new ArrayList<>();
moidList1.add("1");
moidList1.add("2");
moidList1.add("2");
moidList1.add("3");
moidList1.add("3");
moidList1.add("3");
moidList1.add("4");
moidList1.add("4");
moidList1.add("4");
moidList1.add("4");
Map<String, Long> map1 = moidList1.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println("moid出现次数统计(moid=次数):" + map1);
List<Map.Entry<String, Long>> list1 = new ArrayList<>(map1.entrySet());
Collections.sort(list1, new Comparator<Map.Entry<String, Long>>()
{
@Override
public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2)
{
//按照value值,从小到大排序
// return o1.getValue() - o2.getValue();
//按照value值,从大到小排序
// return o2.getValue() - o1.getValue();
//按照value值,用compareTo()方法默认是从小到大排序
return o2.getValue().compareTo(o1.getValue());
}
});
for (Map.Entry s : list1)
{
System.out.println("出现次数最多的moid:" + s.getKey()+"--"+s.getValue());
}
}
执行结果:
moid出现次数统计(moid=次数):{1=1, 2=2, 3=3, 4=4}
出现次数最多的moid:4--4
出现次数最多的moid:3--3
出现次数最多的moid:2--2
出现次数最多的moid:1--1
如果元素是int型,需要拿到出现次数最多的数字,则可以用下列方法(未测试,从其他地方拷贝的):
int[] arr = {1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5};
// 过程1 Collectors.groupingBy代表是分类,按照本身Function.identity()进行分类,那相同数字就会放在一起,Collectors.counting是统计相同数字的个数
Map<Integer, Long> map = IntStream.of(arr).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println("数字出现次数统计(数字=次数):" + map);
// 过程2 max方法是根据比较器(按照map的value进行排序)找出最大值
Optional<Integer> maxOptional = map.entrySet().stream().max(Comparator.comparing(Map.Entry::getValue)).map(Map.Entry::getKey);
System.out.println("出现次数最多的数字:" + maxOptional.get());
java8-lambda-list中字符出现字数的统计的更多相关文章
- java8 Lambda表达式的10个例子(转)
原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码// ...
- java8 Lambda表达式的新手上车指南(1)
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- 【Java学习笔记之三十一】详解Java8 lambda表达式
Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前 ...
- 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)
Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...
- java8在Collection中新增加的方法removeIf
记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题.问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方 ...
- java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口
背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...
- java8 快速入门 lambda表达式 Java8 lambda表达式10个示例
本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...
- Java8 lambda表达式10个示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...
- java8 lambda 函数式编程
package com.atguigu.java8; import java.util.ArrayList; import java.util.Comparator; import java.util ...
随机推荐
- 实现base64的编码解码,深刻理解base64
上代码 #include<stdio.h> #include<string.h> #include<stdlib.h> const char padding = ' ...
- es7.8启动报错 说是主节点没找到
p.p1 { margin: 0; font: 11px Menlo; color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1 ...
- php休眠微秒
<?php $child = new \Swoole\Process(function(){ while(true){ echo date("Y-m-d H:i:s").PH ...
- APP打开(一)—以亲身经历谈APP注册登录
如果不是自己接手过这样的产品,我可能也很难相信,会有公司能够做出十四个注册页面的APP,将选站点.输账号.输密码.用户协议.用户权限等全部拆解成一个一个单独的页面来做,用户在注册的时候仿佛在攀登一座云 ...
- 字节跳动2020Java面经,你离高薪就只差一片面试题了
前言 经历了惨痛的春招与秋招之后,也积攒了一些面经,希望能对大家有所帮助.由于字数限制需要答案的可以关注GZH[程序员空间] 免费领取完整版PDF 其他 什什么是幂等?什什么情况下需要考虑幂等?你怎么 ...
- JS的各种数据类型
Number js与其他编程不一样,不管是整数还是浮点,都称为数字类型(Number) 例:123,1.11111,-960 当该类型结果不存在时,即表示为 NaN (Not a Number) In ...
- TCMalloc 内存分配原理简析
一.TCMalloc TCMalloc简介 为啥要介绍 TCMalloc? 因为golang的内存分配算法绝大部分都是来自 TCMalloc,golang只改动了其中的一小部分.所以要理解golang ...
- linux (简单了解)
目录 Bash Shell 简单了解 Bash Shell基础语法 一 文件管理 二 用户管理 三权限管理 四 软件管理 什么是Bash Shell 命令的解释,用来翻译用户输入的命令 Bash Sh ...
- web应用部署(Tomcat,springboot部署方式)
转载自:https://www.cnblogs.com/haimishasha/p/10791454.html 核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomca ...
- [SuProxy]Ngnix+Lua 实现SSH2,LDAP,ORACLE,SQLSERVER等TCP/IP协议分析,劫持,代理,会话及负载
目录 目录 目录 前言 介绍 安装 下载并拷贝 使用LuaRocks安装 运行测试 使用简介 处理器(processor)创建 通道(channel)创建 负载均衡 会话信息和会话管理 Event H ...