找出一个List中每个元素出现的次数

文章目录

  • 一、需求:找出一个list中,每个元素出现的次数
    • 1. 普通实现(hashmap):
      • 1.1 代码实现:
      • 1.2运行结果:
      • 1.3 案例分析:
    • 2. 普通实现(HashSet#Collections.frequency):
      • 2.1 代码实现:
      • 2.2 运行结果:
      • 2.3 案例分析:
    • 3. 高级用法(jdk8#groupingBy):
      • 3.1 代码实现:
      • 3.2 运行结果:
      • 3.3 案例分析:

一、需求:找出一个list中,每个元素出现的次数

1. 普通实现(hashmap):

可以使用HashMap来统计列表中每个元素出现的次数。遍历列表,对于每个元素,将其作为键存储在HashMap中,值为该元素出现的次数。如果元素已经存在于HashMap中,则将对应的值加1。

1.1 代码实现:

以下是一个示例代码:

import java.util.*;public class Main {public static void main(String[] args) {List<String> list = Arrays.asList("a", "b", "c", "a", "b", "a");Map<String, Integer> frequencyMap = new HashMap<>();for (String element : list) {frequencyMap.put(element, frequencyMap.getOrDefault(element, 0) + 1);}for (Map.Entry<String, Integer> entry : frequencyMap.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}
}

1.2运行结果:

123

1.3 案例分析:

在这个示例中,我们首先创建了一个包含一些字符串元素的List。然后,我们创建了一个HashMap来存储元素和其出现次数的映射关系。

接下来,我们遍历列表中的每个元素,对于每个元素,我们使用getOrDefault()方法获取其当前的计数值,并将其加1。然后,我们使用put()方法将元素和新的计数值存储在HashMap中。

最后,我们遍历HashMap的条目集,并输出每个元素以及其出现的次数。

2. 普通实现(HashSet#Collections.frequency):

我们定义一个包含所有元素的集合(Set),这样可以避免重复元素的重复计算。然后,我们遍历列表中的每个元素,对于每个元素,我们使用Collections类的frequency()方法来计算该元素在列表中出现的次数,并将结果存储在一个新的集合中。

2.1 代码实现:

以下是使用这种方法的示例代码:

import java.util.*;public class Main {public static void main(String[] args) {List<String> list = Arrays.asList("a", "b", "c", "a", "b", "a");Set<String> uniqueElements = new HashSet<>(list);for (String element : uniqueElements) {int frequency = Collections.frequency(list, element);System.out.println(element + " : " + frequency);}}
}

2.2 运行结果:

456

2.3 案例分析:

  1. 在这个示例中,我们首先创建了一个包含列表中所有元素的HashSet(uniqueElements)。这将自动去除重复元素,确保每个元素只计算一次。

  2. 然后,我们使用for-each循环遍历uniqueElements集合中的每个元素。对于每个元素,我们使用Collections类的frequency()方法来计算该元素在列表中出现的次数,并将结果存储在frequency变量中。

  3. 最后,我们输出元素和对应的出现次数。

3. 高级用法(jdk8#groupingBy):

使用Java 8表达式可以很方便地找出一个List中每个元素出现的次数。可以使用Stream API中的groupingBy()方法来实现。

3.1 代码实现:

下面是一个示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> list = Arrays.asList("a", "b", "c", "a", "b", "a");Map<String, Long> frequencyMap = list.stream().collect(Collectors.groupingBy(s -> s, Collectors.counting()));for (Map.Entry<String, Long> entry : frequencyMap.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}
}

3.2 运行结果:

运行结果

3.3 案例分析:

在这个示例中,我们首先创建了一个包含一些字符串元素的List。然后,我们使用stream()方法将List转换为一个流。接下来,我们使用groupingBy()方法按照元素进行分组,并使用counting()方法计算每个元素出现的次数。最后,我们遍历结果的Map,并输出每个元素和其出现的次数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8271.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot实现后端防重复提交(AOP+redis分布式锁)单机情况下

文章目录 0、依赖1、自定义接口2、实现redis分布式锁3、统一返回值ReturnT4、CookieUtil5、自定义AOP6、测试 为什么要实现这个功能呢&#xff0c;可能用户在提交一份数据后&#xff0c;可能因为网络的原因、处理数据的速度慢等原因导致页面没有及时将用户刚提交数据的后台处理…

【经典题目分析】数组分割问题

文章目录 698. 划分为k个相等的子集416. 分割等和数组 698. 划分为k个相等的子集 把一个数组&#xff0c;拆分成K个大小一样的子数组。方法可以是状态枚举&#xff0c;或者dfs class Solution { public:bool canPartitionKSubsets(vector<int>& nums, int k) {// 从…

Gateway网关

网关的作用 对用户请求作身份认证、权限校验将用户请求路由到微服务&#xff0c;并实现负载均衡对用户请求作限流 引入依赖 <!--nacos服务注册发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter…

pdf如何导出为图片?分享三个方法PDF转图片!

将PDF文件转换为图片是在许多场景下都非常有用的操作&#xff0c;不仅能够保留原始文档的内容&#xff0c;还方便在各种平台上共享和展示。在本文中&#xff0c;我们将介绍三种简便的方法&#xff0c;帮助您将PDF文件快速转换为图片格式。 方法一&#xff1a;使用记灵在线工具…

Linux环境搭建(三)— 搭建数据库服务器

linux &#xff08;ubuntu&#xff09;安装mysql 和环境配置 一、安装MySql二、配置环境三、外网访问四、重置密码五、卸载 写在前面&#xff1a; 本文默认你的Linux系统已经安装vim&#xff0c;yum等&#xff0c;如你使用的是一个全新的操作系统&#xff0c;移步上一篇开始配置…

webpack相关面试题

webpack面试题 1.webpack和vite区别2.如何优化webpack打包速度&#xff1f;3.说说webpack中常见的Plugin&#xff1f;解决了什么问题4.说说如何借助webpack来优化前端性能&#xff1f;如何优化JS代码压缩CSS代码压缩Html文件代码压缩文件大小压缩图片压缩Tree ShakingusedExpor…

rsync 远程同步

rsync 远程同步 一、概念 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09; 是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&#xff0c;传输…

爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】

文章目录 介绍技术要点SeleniumBeautifulSoupOpenpyxl 实现步骤&#xff1a;导入所需库设置网页URL和驱动路径创建 ChromeDriver 服务配置 ChromeDriver创建 Excel 文件爬取数据关闭浏览器保存 Excel 文件 完整代码导出的excel 效果图未完待续.... 介绍 在本篇博客中&#xff…

使用docker搭建mysql集群

一、技术架构 1、架构图 2、解说 mysql_1、mysql_2、mysql_3是一组主从模式,同理mysql_4、mysql_5、mysql_6也是一组主从模式从上面的图可以看出mysql_1和mysql_4是主节点,可以进行增删改查操作,但是子几点只能查询操作如果mysql_1节点出现问题了&#xff0c;有mysql_4节点组…

Android Binder通信原理(七):java 下的C-S

源码基于&#xff1a;Android R 0. 前言 在之前的几篇博文中&#xff0c;对Android binder 的通信原理进行的深入的剖析&#xff0c;这些博文包括&#xff1a;binder 简介、servicemanager启动、service注册、service获取、Java 端的service 注册和获取。 在前一文中&#xf…

五、卷积神经网络

文章目录 前言一、图像卷积1.1 不变性1.2 互相关运算1.3 卷积层1.4 互相关和卷积1.5 特征映射和感受野 二、填充和步幅2.1 填充2.2 步幅 三、多输入多输出通道3.1 多输入通道3.2 多输出通道3.3 11卷积层 四、汇聚层/池化层4.1 最大汇聚层与平均汇聚层4.2 填充和步幅4.3 多个通道…

Squid代理服务器

Squid代理服务器 一、Squid相关知识 1.功能 Squid 主要提供缓存加速、应用层过滤控制的功能。 2.工作机制 1&#xff0e;代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。 2&#xff0e;将获得的网页数据&#xff08;静态 Web 元素&#xff09;保存到…