gpt4 book ai didi

Java:仅从集合中选择提供类型的元素

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:43 28 4
gpt4 key购买 nike

我有一个 B 和 C 类型元素的集合,它们都扩展了 A。我需要过滤集合以获取只有 B 类型的元素。

有什么办法可以做到,除了:

for (A a : initCollection) {
if (a instanceof B) {
newCollection.add(a)?
}
}

谢谢

最佳答案

Guava在其他答案中提到,但没有提到具体的解决方案,这比人们意识到的还要简单:

Iterable<B> onlyBs = Iterables.filter(initCollection, B.class);

它简单干净,做正确的事,只创建一个实例,不复制任何东西,也不会引起任何警告。

(Collections2.filter() 方法没有这种特殊的重载,所以如果你真的想要一个 Collection ,你必须提供 Predicates.instanceOf(B.class) 并且结果集合仍然是 Collection<A> 类型.)

关于Java:仅从集合中选择提供类型的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722343/

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