gpt4 book ai didi

java - 例如,将 Iterator 转换为 Set 的最佳方式
转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:38 25 4
gpt4 key购买 nike

类型转换 Iterator<Object>Set<String>

什么是最干净/最佳的实践方式?

最佳答案

public Set<B> getBs(){
Iterator<A> iterator = myFunc.iterator();
Set<B> result = new HashSet<B>();
while (iterator.hasNext()) {
result.add((B) iterator.next();
}
return result;
}

当然,如果迭代器返回的所有 A 都不是 B,它当然会失败。

如果要过滤迭代器,那么使用instanceof:

public Set<B> getBs(){
Iterator<A> iterator = myFunc.iterator();
Set<B> result = new HashSet<B>();
while (iterator.hasNext()) {
A a = iterator.next();
if (a instanceof B) {
result.add((B) iterator.next();
}
}
return result;
}

使用 Guava ,上面可以简化为

return Sets.newHashSet(Iterators.filter(myFunc.iterator(), B.class));

关于java - 例如,将 Iterator<Object> 转换为 Set<String> 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581561/

25 4 0