当前位置: 首页 > 面试题库 >

如何实现此FilteringIterator?

帅颖逸
2023-03-14
问题内容
  1. IObjectTest是具有单个布尔测试(对象o)方法的接口

  2. FilteringIterator是Iterator的实现,该实现使用另一个Iterator和一个IObjectTest实例初始化:new FilteringIterator(myIterator,myTest)。然后,您的FilteringIterator将允许在“ myIterator”上进行迭代,但是会跳过所有未通过“ myTest”测试的对象。

由于“ hasNext”操作实际上涉及重复移动基础迭代器,直到到达下一个匹配项。问题是如何将迭代器移回去,因为hasNext不应移动基础迭代器。


问题答案:

您将需要使迭代器成为有状态的。缓存您从中检索到的最后一个值,hasNext并使用该next方法中的值(如果存在)。

private boolean hasCached;
private T cached;

public boolean hasNext() {
   if ( hasCached ) return true;
   //iterate until you find one and set hasCached and cached
}

public T next() {
   if ( hasCached ) {
      hasCached = false;
      return cached;
   }
   //iterate until next matches
}


 类似资料:
  • 问题内容: 我有一个ajax调用,需要返回一个promise。功能如下 在执行下一个动作之前,我必须等待该功能执行。我该如何保证这个功能? 我尝试了以下操作,它给了我一个错误,说: 问题答案: 您有错误,因为它不是Promise。承诺异步功能非常容易(如今,nodejs具有内置的Promise支持):

  • 我刚来暴风,所以温柔点:-) 什么是实现这一目标的最佳方式?

  • 代码示例: 这是否会导致未定义的行为?我们可以争论它是否“取消引用为空”,但是C11没有定义术语“取消引用”。 6.5.3.2/4清楚地表明,在空指针上使用会导致未定义的行为;然而,它并没有对

  • 我已经编写了一个静态编程语言FirebasRecyclerAdapter,它作为我的主要活动的一部分工作得很好。但是,我希望将此代码放在单独的Main Adapter.kt文件/类中。我该怎么做呢?

  • 问题内容: 我在同一HTML页面上同时使用了javascript和jquery代码。由于某种原因,jQuery库正在阻止我的本机javascript代码正常工作。 我找到了此页面:jQuery No Conflict,它表明您可以使用jquery.noConflict将$释放回javascript。但是,我不确定该怎么做? 具体来说,我不确定如何正确执行此操作?Jquery代码在哪里,JS代码在哪

  • 问题内容: 我已经开发Web应用程序已有一段时间了,但是最近使用Comet服务器端推送技术对其进行了介绍,而我对该技术的理解还很不成熟。虽然链接http://www.zeitoun.net/articles/comet_and_php/start提供了两个使用PHP中无限循环的简单示例实现,但我想进一步了解上述方法的用途以及是否适合生产。专用彗星服务器如Meteor(http://meteorse