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

Java迭代器遍历参数化类型的空集合

贺奕
2023-03-14
问题内容

在Java中,我需要从我的方法中返回一个Iterator。我的数据来自另一个对象,该对象通常可以给我一个迭代器,因此我可以返回它,但是在某些情况下,基础数据为null。为了保持一致,在这种情况下,我想返回一个“空”迭代器,这样我的调用者就不必测试null。

我想写一些类似的东西:

public Iterator<Foo> iterator() {
   if (underlyingData != null) {
      return underlyingData.iterator();  // works
   } else {
      return Collections.emptyList().iterator();  // compiler error
   }
}

但是Java编译器抱怨返回Iterator<Object>而不是Iterator<Foo>。投射到(Iterator<Foo>)也不起作用。


问题答案:

您可以通过以下语法获取Foo类型的空列表:

return Collections.<Foo>emptyList().iterator();


 类似资料:
  • 本文向大家介绍Java中迭代遍历数组,包括了Java中迭代遍历数组的使用技巧和注意事项,需要的朋友参考一下 要遍历Java中的数组,只需使用for循环即可。循环应一直到数组的长度才能显示所有元素。 示例 现在让我们来看一个遍历数组的示例- 输出结果 示例 我们还可以使用for循环遍历数组- 输出结果

  • Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列集合主要用于盛装其他对象,而 Iterator 则主要用于遍历(即迭代访问)Collection 集合中的元素。 Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提

  • 我试图遍历一个数据集来进行一些字符串相似性计算,如Jaro winkler或余弦相似性。我将数据集转换为行列表,然后用for语句遍历,这不是有效的spark方法。因此,我期待在Spark中找到更好的方法。 我发现了许多我不清楚的JavaRDD示例。数据集示例将对我有很大帮助。

  • Java 8 为 Iterator 引入了一个 forEachRemaining(Consumer action) 默认方法,该方法所需的 Consumer 参数同样也是函数式接口。当程序调用 Iterator 的 forEachRemaining(Consumer action) 遍历集合元素时,程序会依次将集合元素传给 Consumer 的 accept(T t) 方法(该接口中唯一的抽象方法

  • 问题 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 解决方案 为了手动的遍历可迭代对象,使用 next() 函数并在代码中捕获 StopIteration 异常。 比如,下面的例子手动读取一个文件中的所有行: def manual_iter(): with open('/etc/passwd') as f: try: while T

  • 所以我在研究树遍历算法。例如,在K-d树遍历中,我们的目标是遍历节点直至叶子。这与其说是一个树搜索,不如说是一个根到叶的遍历。 在这种情况下,递归解决方案就足够了。但是,在C等语言中,递归调用函数需要将值推送到堆栈上,并在堆栈帧之间跳跃等。标准的递归方法类似于: 因此,考虑到二叉树有一个明确的上界(我相信这也可以扩展到其他树类型),以迭代方式执行此遍历是否更有效: 二叉树的最大高度是它的节点数,而