下面是一个示例代码,展示如何按子类型将Java对象分组:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Animal {}
class Cat extends Animal {}
class Dog extends Animal {}
public class GroupBySubtypeExample {
public static void main(String[] args) {
List animals = new ArrayList<>();
animals.add(new Cat());
animals.add(new Dog());
animals.add(new Cat());
animals.add(new Dog());
Map, List> groupedAnimals = new HashMap<>();
for (Animal animal : animals) {
Class extends Animal> animalType = animal.getClass();
if (!groupedAnimals.containsKey(animalType)) {
groupedAnimals.put(animalType, new ArrayList<>());
}
groupedAnimals.get(animalType).add(animal);
}
for (Class extends Animal> animalType : groupedAnimals.keySet()) {
List animalsOfType = groupedAnimals.get(animalType);
System.out.println("Animals of type " + animalType.getSimpleName() + ": " + animalsOfType.size());
}
}
}
在这个示例中,我们定义了一个Animal
类,以及两个子类Cat
和Dog
。然后,我们创建了一个List
来存储不同类型的Animal
对象。
接下来,我们使用HashMap
来创建一个映射,将每个子类型的Animal
对象分组。我们遍历animals
列表,获取每个Animal
对象的具体子类型,并将其添加到对应的分组中。
最后,我们迭代分组映射,并输出每个子类型的对象数量。
运行上述代码将输出:
Animals of type Cat: 2
Animals of type Dog: 2
这表明我们成功地按子类型将Java对象分组。
上一篇:按子类型分组的流