gpt4 book ai didi

java - 从 ArrayList 获取特定类型的第一个元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:20 24 4
gpt4 key购买 nike

我有 Animal 类型的 ArrayList。此列表包含 10 个对对象的引用,这些对象是 3 只狗、3 只猫和 4 只鸟。所有三种类型(DogCatBird)都继承自 Animal。动物秩序

有没有比遍历整个列表并使用 instanceof 运算符更有效地从列表中获取第一个 Cat 的方法?

例如。

Cat cat = null;
for(Animal animal: animalsList){
if( animal instanceof Cat){
cat = animal;
break;
}
}

最佳答案

不,就您需要执行的操作而言,这是尽可能快的:搜索特定对象的 ArrayList 始终是线性的(即 O(n) )。

然而,就可读性而言,您可以通过将搜索隐藏在一个带有列表和类型的辅助方法中来改进这一点,并找到该项目的第一次出现:

public static <E> E findFirst(List<E> list, Class<E> itemType) {
for (E element : list) {
if (itemType.isInstance(element)) {
return element;
}
}
return null;
}

如果您需要比这更快的搜索,您将需要不同的数据结构。

关于java - 从 ArrayList 获取特定类型的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com