首页 > Java > java教程 > 正文

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

P粉602998670
发布: 2025-10-31 05:57:31
原创
121人浏览过
答案:通过遍历集合结合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<Object> objects = Arrays.asList(
            "Hello",
            123,
            "World",
            45.6,
            new ArrayList<>(),
            "Java",
            789L
        );

        Map<String, Integer> 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}
    }
}
登录后复制

按自定义类型分类统计

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

立即学习Java免费学习笔记(深入)”;

百度文心百中
百度文心百中

百度大模型语义搜索体验中心

百度文心百中22
查看详情 百度文心百中
示例:统计不同动物类型的数量

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<Animal> animals = Arrays.asList(
            new Dog(), new Cat(), new Dog(), new Bird(), new Cat()
        );

        Map<String, Integer> 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<String, Long> result = objects.stream()
    .collect(Collectors.groupingBy(
        obj -> obj.getClass().getSimpleName(),
        Collectors.counting()
    ));
登录后复制

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

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

以上就是在Java中如何统计集合中不同类型对象的数量的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号