确定链接列表中的对象类型

时间:2016-05-04 19:41:29

标签: java oop inheritance

我有一个链表,用于存储“Car”的对象:

LinkedList<Car> cars = new LinkedList<Car>();

汽车可以是大型也可以是小型汽车,因此,它们分为2个子类(LargeCar,SmallCar)。

我需要遍历我的链表并计算SmallCar对象的数量。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

int small = 0;
int large = 0;
for (Car nextCar : cars) {
    if (nextCar instanceof LargeCar) {
       large++;
    } else if (nextCar instanceof SmallCar) {
       small++;
    }
}

写自由的手可能有奇怪的错字。

在此实验:code

答案 1 :(得分:0)

您可以使用groupingBy:

        LinkedList<Car> cars = new LinkedList<>(Arrays.asList(
                new LargeCar(),new LargeCar(),new LargeCar(),new LargeCar(),
                new LargeCar(),new SmallCar(),new SmallCar(),new SmallCar()
        ));

        Map<Class, Long> counted =
                cars.stream().collect(
                    Collectors.groupingBy(Car::getClass, Collectors.counting()));

        System.out.println(counted.get(LargeCar.class));
        System.out.println(counted.get(SmallCar.class));