Java 计算整数数组中每个元素的出现次数

2023-11-23

我编写了以下代码片段来计算每个元素出现的次数。是否有可能以更短的方式实现这一目标?

int[] arr = {1, 6, 2, 8, 5, 4, 7, 7, 5, 7};
Arrays.stream(arr)
        .collect(ArrayList::new, ArrayList::add, ArrayList::addAll)
        .stream()
        .collect(Collectors.groupingBy(s -> s))
        .forEach((k, v) -> System.out.println(k+" "+v.size()));

另外我想只显示出现次数超过 1 次的元素。所以我尝试如下修改,结果出现错误。

.forEach((k, v) -> if(v.size() > 1) System.out.println(k+" "+v.size()));

这样做的正确方法是什么?


对于后一个问题,你必须改变

.forEach((k, v) -> if(v.size() > 1) System.out.println(k+" "+v.size()));

to

.forEach((k, v) -> {if(v.size() > 1) System.out.println(k+" "+v.size());});

对于第一部分,不清楚为什么需要第一个collect接下来是第二个Stream管道。 如果目的是转换IntStream to a Stream<Integer>, use boxed():

Arrays.stream(arr)
      .boxed()
      .collect(Collectors.groupingBy(s -> s))
      .forEach((k, v) -> System.out.println(k+" "+v.size()));

正如 Dici 建议的那样,您还可以链接收集器以将每个数字及其出现次数分组:

Map<Integer,Integer> occurrences = 
    Arrays.stream(arr)
          .boxed()
          .collect(Collectors.groupingBy(s -> s, Collectors.counting()));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 计算整数数组中每个元素的出现次数 的相关文章

随机推荐

  • “cout<<(char*)NULL”在这里执行“close(1)”吗? [复制]

    这个问题在这里已经有答案了 在下面的代码中我使用了cout lt lt char NULL 在这一行之后 我的程序没有在输出屏幕上打印任何内容 这是否意味着我已经做到了close 1 with cout这里 这里到底发生了什么 这是一个错误
  • 数据表更改界面语言

    我目前正在使用角度数据表 如何查看其他语言的表格界面 我的意思是西班牙语中的 显示条目 搜索 显示 20 个条目中的 1 到 10 个 文字 您需要定义这样的语言结构 丹麦实现 我在我的角度数据表应用程序中使用的 var language
  • 自动禁用特定主要模式的全局次要模式

    我已全局激活居中光标模式 如下所示 require centered cursor mode global centered cursor mode 1 它工作正常 但有一些主要模式我想自动禁用它 例如 slime repl 和 shell
  • 谷歌地图 API;禁止地图平移以启用页面滚动

    我有一个移动网页 客户可以通过表单提交或当前位置弹出窗口输入邮政编码 然后查找附近的中心 响应包括这些中心的列表以及显示其位置的谷歌地图插入以及指示列表中指示的中心的图钉 问题是地图占用了页面上的大量空间 向下滚动到地图正下方的列表很困难
  • 如何使用批处理脚本对目录中的每个文件执行多项操作

    这是这个问题的直接延伸 如何使用批处理脚本对目录中的每个文件执行某些操作 从上面我学习了如何对文件夹中的每个文件执行命令 如何对每个文件执行多个命令 我想先使用lame压缩文件 然后将原始文件移动到不同的目录 这是我到目前为止所拥有的 FO
  • 颤动 || W/DynamiteModule(4887):未找到 com.google.android.gms.providerinstaller.dynamite 的本地模块描述符类

    当我从 Firebase Firestore 获取数据时 不显示数据 这给了我这个问题 它与Firebase或其他什么有关吗 W DynamiteModule 4887 Local module descriptor class for c
  • initializer_list 不可变性质导致过度复制

    为什么可以访问std initializer list不允许我们更改其内容 这是一个很大的缺点std initializer list当将它用于其主要目的 初始化容器 时 因为它的使用会导致过多的复制构造 复制赋值 而不是移动构造 移动赋值
  • 将图形导出为 PDF 时,可以导出绘图标签中的特殊符号/西里尔字母吗?

    我正在尝试将图形列表导出为 PDF 格式的单独帧 以便随后借助外部实用程序 例如 pdf2swf 编译矢量 SWF 动画 不幸的是 导出的 PDF 文件中的一些特殊字符 例如度数符号或三点 被损坏 这也是所有俄语字母的命运 请注意 当直接从
  • 如何让线条动画更流畅?

    我正在用 Java 制作一个简单的动画 并试图使其尽可能流畅 我仅使用每个 Shape 对象的 Double 内部类 并在 Graphics2D 对象中设置抗锯齿功能 只要我只使用 fill 方法 这一切都有效 但如果我还使用 draw 方
  • 致命错误:无法将 User 类型的对象用作数组

    应用程序上的用户通过电子邮件登录 此电子邮件处于会话中 通过此会话 我尝试获取该用户的更多信息 以打印出该用户的 姓氏 姓名和头像 当我在导航栏中执行此操作时 他做得很好 但在页面本身上却出现以下错误 致命错误 无法将 User 类型的对象
  • 如何重新安装 base-R 软件包(例如统计数据、图形、实用程序等)?

    我一直在 R 3 0 1 中使用 stats 包 没有任何问题 但今天我从 R 库位置删除了 stats 文件夹 现在我无法再安装它了 我尝试对其他软件包执行相同的操作 但我可以安装除 stats 之外的所有内容 install packa
  • 对于 64 位进程,kb 显示什么?

    我最近在分析调用堆栈时犯了一个错误 因为我没想到该应用程序是 64 位的 我使用了WinDbg命令kb显示调用堆栈和传递给方法的参数 在 64 位上 参数不是通过堆栈传递 而是通过寄存器 RCX RDX R8 和 R9 传递 看来WinDb
  • NSAttributedString 对齐不适用于 html 内容

    想要更改 html 标签的对齐方式 什么都不起作用 我在 HTML 中没有看到任何 CSS 没有其他设置可以更改对齐方式 我还直接在 UILabel 上设置左对齐 我缺少什么 代码位于 UILabel 扩展中 NSMutableParagr
  • VBA-SQL 对 Excel 工作表进行更新/插入/选择

    简而言之 我正在为我的客户制作一个调度程序 由于限制 它需要位于单个 Excel 文件中 尽可能小 因此 一个工作表充当 UI 而任何其他工作表将充当表格或设置 我正在尝试使用 SQL 我是新手 来处理单个工作表 名为 TblEmpDays
  • malloc 是否会在 Linux(和其他平台)上延迟创建分配的支持页面?

    如果我要在 Linux 上malloc 1024 1024 1024 malloc 实际上做了什么 我确信它会为分配分配一个虚拟地址 通过遍历空闲列表并在必要时创建新映射 但它实际上会创建 1 GiB 的交换页吗 或者是这样mprotect
  • 如何在运行时分配 ToolButton 的 OnClick 事件?

    我在设计时创建了一个没有工具按钮的 TToolBar 我的想法是在运行时创建 ToolButtons 并在创建表单时将它们放在那里 只是为了向用户显示打开了哪些表单 而无需在主菜单中打开 Windows 菜单 我有一个名为 Navigati
  • 外部模块中的模式在 Node.js 中不起作用

    我非常头疼尝试通过一个模块将一些常见的模式定义共享给我的代码库中的所有其他模块 我有一个 myproj schemas 模块 其中包含这两个模式 var mongoose require mongoose util require util
  • 使用 Bullet 和 RSpec gem 减少 n+1 查询

    将 Bullet Gem 与 RSpec 结合使用的有效方法是什么 现在 我觉得如果我将它与当前的单元测试框架一起使用 我会收到很多通知或测试失败 因为测试本身中的 n 1 查询与我的生产应用程序中发生的情况无关 例如检查值或关联 因此 修
  • 如何从 SQL 数据库流式传输 .flv 文件

    我想将 flv 文件存储在数据库中而不是文件系统中 这就是我现在可以做的 使用 ffmpeg 成功将 wmv 和 mpeg 转换为 flv 将图像存储在 SQL Server 中并使用 httphandler 在我的页面上显示它们 与 av
  • Java 计算整数数组中每个元素的出现次数

    我编写了以下代码片段来计算每个元素出现的次数 是否有可能以更短的方式实现这一目标 int arr 1 6 2 8 5 4 7 7 5 7 Arrays stream arr collect ArrayList new ArrayList a