商城首页欢迎来到中国正版软件门户

您的位置:首页 >Java统计集合对象数量方法解析

Java统计集合对象数量方法解析

  发布于2025-12-27 阅读(0)

扫一扫,手机访问

答案:通过遍历集合结合Map统计对象类型数量,可使用instanceof或getClass()获取类型,利用HashMap记录每类出现次数,示例中List包含多种对象,经处理后输出各类型计数;自定义类如Animal子类也可同法统计;Java 8可用Stream的groupingBy与counting()简化代码。

在Java中如何统计集合中不同类型对象的数量

在Java中统计集合中不同类型对象的数量,可以通过遍历集合并使用instanceof判断对象类型,结合Map来记录每种类型的数量。以下是具体实现方式和示例。

使用 instanceof 和 Map 统计类型数量

假设你有一个存放多种对象的集合,比如 Object 类型的 List,你可以通过以下方式统计:

定义一个 Map<String, Integer>,键为类名或类型标识,值为出现次数。

示例代码:

import java.util.*;

public class TypeCounter {
    public static void main(String[] args) {
        List objects = Arrays.asList(
            "Hello",
            123,
            "World",
            45.6,
            new ArrayList<>(),
            "Java",
            789L
        );

        Map typeCount = new HashMap<>();

        for (Object obj : objects) {
            String typeName = obj.getClass().getSimpleName();
            typeCount.put(typeName, typeCount.getOrDefault(typeName, 0) + 1);
        }

        System.out.println(typeCount);
        // 输出示例: {String=3, Integer=1, Double=1, ArrayList=1, Long=1}
    }
}

按自定义类型分类统计

如果你的集合包含自定义类的对象,比如继承自某个父类或接口,也可以用类似方法统计子类型数量。

示例:统计不同动物类型的数量

abstract class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
class Bird extends Animal {}

public class AnimalCounter {
    public static void main(String[] args) {
        List animals = Arrays.asList(
            new Dog(), new Cat(), new Dog(), new Bird(), new Cat()
        );

        Map countByType = new HashMap<>();
        for (Animal animal : animals) {
            String type = animal.getClass().getSimpleName();
            countByType.merge(type, 1, Integer::sum);
        }

        System.out.println(countByType); 
        // 输出: {Dog=2, Cat=2, Bird=1}
    }
}

使用 Java 8 Stream 简化统计

利用 StreamCollectors.groupingBy 可以更简洁地实现相同功能。

Map result = objects.stream()
    .collect(Collectors.groupingBy(
        obj -> obj.getClass().getSimpleName(),
        Collectors.counting()
    ));

这种方式代码更简洁,适合函数式编程风格。

基本上就这些。根据集合内容选择合适的方法,核心是获取对象运行时类型并累加计数。注意 getClass()instanceof 更适合多态场景,避免手动写多个条件判断。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。
  • 小青账如何隐藏默认账本?小青账隐藏默认账本教程 正版软件
    小青账如何隐藏默认账本?小青账隐藏默认账本教程
    小青账如何隐藏默认账本?小青账是一款非常实用且强大的记账软件,为广大用户提供了方便的记账功能。不少用户对如何隐藏默认账本感到困惑,下面小编将介绍小青账隐藏默认账本的操作方法。还不知道的小伙伴快来看看吧!
    12小时前 13:05 0
  • 如何使用讯飞星火生成ppt?利用讯飞星火AI生成高质量ppt教程 正版软件
    如何使用讯飞星火生成ppt?利用讯飞星火AI生成高质量ppt教程
    讯飞星火怎么生成高质量ppt?你是否曾经在深夜里为第二天的工作汇报而焦头烂额,翻遍互联网寻找灵感和模板,又或者因为繁琐的排版和设计而感到力不从心?现在,有了讯飞星火AI生成PPT,你的所有烦恼都将一扫而光!
    12小时前 12:52 0
  • 搜狐视频怎么投屏到电视播放?搜狐视频app电视投屏方法教程 正版软件
    搜狐视频怎么投屏到电视播放?搜狐视频app电视投屏方法教程
    搜狐视频怎么投屏到电视播放?有时候我们在看电视的时候会觉得怕屏幕不够大,看的不大清楚,这时候就会想如果有个大屏幕就好了,今天小编教你们如何用搜狐视频投屏到电视上,彻底的解放双手。搜狐视频app电视投屏教程1、首先打开搜狐视频app,搜索想看的视频或影视剧2、进入详情页后点击有TV字样的图标3、然后搜索附近的设备连接我们的电视4、当电视上出现了手机正在播放的
    12小时前 12:38 0
  • 豆瓣怎么设置主页不可见?豆瓣设置隐私主页教程 正版软件
    豆瓣怎么设置主页不可见?豆瓣设置隐私主页教程
    豆瓣怎么设置主页不可见?大家在使用豆瓣的时候,经常会在主页发布自己的心情状态、吐槽等等内容,然后其他用户进我们的主页的时候就能很轻松的看到我们发过的内容,那么我们能不能设置主页的隐私呢?要怎么设置呢?下面小编就为大家介绍一下豆瓣个人主页设置隐私的办法。
    14小时前 10:50 0
  • 夸克浏览器怎么设置电脑模式?夸克浏览器设置成电脑模式教程 正版软件
    夸克浏览器怎么设置电脑模式?夸克浏览器设置成电脑模式教程
    夸克浏览器怎么设置电脑模式?嘿,兄弟们,你是否曾经需要在手机上看网页,但又要让页面显示效果如同在电脑上的体验?如果是,那么恭喜您,夸克浏览器就是您的不二之选!它不仅拥有简洁明了的界面设计,而且夸克浏览器手机版也可以轻松设置成电脑版,让你在手机端也能够享受到如同在电脑上的浏览体验。
    昨天 03-21 12:02 0

热门关注