我有一个链表,用于存储“Car”的对象:
LinkedList<Car> cars = new LinkedList<Car>();
汽车可以是大型也可以是小型汽车,因此,它们分为2个子类(LargeCar,SmallCar)。
我需要遍历我的链表并计算SmallCar对象的数量。
如何做到这一点?
答案 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));