gpt4 book ai didi

java - 如何在java集合中查找特定类型

转载 作者:行者123 更新时间:2023-12-01 17:23:02 25 4
gpt4 key购买 nike

我有一个类(Class)层次结构,

Class b extends class a 
Class c extends class a

所有三个类都可以实例化。现在这三种类型的对象被添加到Set中。

我需要遍历这个集合并找出类型 c 的实例,然后对其进行一些处理。

目前我正在遍历该集合并检查每个条目是否是 c 的实例。

有更好的方法吗?Collections 库本身中的某些内容?

最佳答案

您没有准确指定您想要的行为。 听起来好像您只想要 c 的确切实例,而不是从 c 派生的任何类的实例。

如果是这种情况,请使用 Object.getClass :

x.getClass().equals(c.class);

如果 xc 的实例,则该值为 true;如果 x 是一个 x,则该值为 true。从 c 派生的类的实例。

如果不是这种情况,请使用 instanceof :

x instanceof c

如果xc的实例,则该值为真;如果x是一个,则该值为真。从 c 派生的类的实例。

无论您选择哪一个,您都想使用迭代器:

Iterator<a> iter = set.iterator();
while(iter.hasNext()) {
a item = iter.next()
if(item[.getClass().equals(c.class)| instanceof c]) {
// do something with item
}
}

当然,这是常见的模式,有libraries封装了这个逻辑。

关于java - 如何在java集合中查找特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17214371/

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