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

在Java中统计集合中不同类型对象的数量,可以通过遍历集合并使用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免费学习笔记(深入)”;
示例:统计不同动物类型的数量
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}
    }
}
利用 Stream 和 Collectors.groupingBy 可以更简洁地实现相同功能。
Map<String, Long> result = objects.stream()
    .collect(Collectors.groupingBy(
        obj -> obj.getClass().getSimpleName(),
        Collectors.counting()
    ));
这种方式代码更简洁,适合函数式编程风格。
基本上就这些。根据集合内容选择合适的方法,核心是获取对象运行时类型并累加计数。注意 getClass() 比 instanceof 更适合多态场景,避免手动写多个条件判断。
以上就是在Java中如何统计集合中不同类型对象的数量的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号