在Java中为集合的集合设计一个迭代器。迭代器应隐藏嵌套,使您可以迭代属于所有集合的所有元素,就像使用单个集合一样
这是一个可能的实现。请注意,我没有执行remove():
public class MultiIterator <T> implements Iterator<T>{
private Iterator<? extends Collection<T>> it;
private Iterator<T> innerIt;
private T next;
private boolean hasNext = true;
public MultiIterator(Collection<? extends Collection<T>> collections) {
it = collections.iterator();
prepareNext();
}
private void prepareNext() {
do {
if (innerIt == null || !innerIt.hasNext()) {
if (!it.hasNext()) {
hasNext = false;
return;
} else
innerIt = it.next().iterator();
}
} while (!innerIt.hasNext());
next = innerIt.next();
}
@Override
public boolean hasNext() {
return hasNext;
}
@Override
public T next() {
if (!hasNext)
throw new NoSuchElementException();
T res = next;
prepareNext();
return res;
}
@Override
public void remove() {
//TODO
}
}
嗨,伙计们,我把这个作为面试问题来回答,但我遇到了麻烦。我熟悉泛型/集合 问题是:所提供的工作区中包含cocI,它是一个类的开始,该类实现了一个迭代器,可用于迭代集合集合。集合集合被传递到类的构造函数中。迭代器应该首先遍历内容深度。 例如,如果集合集合如下所示: 然后迭代器应按以下顺序返回内容:“A”、“B”、“C”、“D”、“E”、“F” Q.在cocI中提供hasNext()和next()方法
假设我有一个包含集合的对象,所述集合上的每个元素都包含一个集合,每个集合都包含一个集合。 我想在最深的对象上迭代,并对其应用相同的代码。 命令式的方法是微不足道的,但有没有一种方法来完成这一切? 我可以看到如何从最深的循环中生成lambda: 但我能做得更多吗?
IM有下一个模型和集合定义: 日志记录显示,集合创建正确: {长度:15,模型:数组[15],_byId:对象,构造函数:函数,模型:函数...} 但是,当尝试迭代集合(在渲染视图方法中)时,显然无法正确获取当前元素: console.log,而不是返回模型,返回: {cid:“c1”,属性:对象,集合:r,_changing:false,_previousAttributes:Object…}
在这个函数中,我对这一行有问题:for(std::set it=owners.begin();它!=业主。结束();它)。 这是错误: 这行有多个标记--“std::set”
我正在使用Flutter和Cloud FiRecovery构建一个Instagram克隆,我正在尝试像这样构建数据库: 收藏(“时间线”) 实际上看起来像这样: 阅读项目标题,例如,很容易。我可以渲染一个Listview.builder并使用: 但是我如何遍历每个项目的评论子集合?我尝试了嵌套的Listview和this,但我无法访问elementAt(index)的子集合: 或者有没有更好的方法
我正在研究一个扑克牌洗牌的问题,并找到了两个解决方案。 目标是将存储在阵列中的所有52张扑克牌作为卡对象进行洗牌。卡类具有与其关联的id和名称。 现在,一种方法是使用for循环迭代,然后在临时卡对象持有者和随机数生成器的帮助下,我们可以交换两个对象。这一直持续到我们到达一半的卡片。 另一种方法是使用随机生成器编号实现可比较的覆盖比较方法,因此每次调用该方法时都会得到随机响应。 你觉得哪条路更好?