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

对象的迭代器[]

储承
2023-03-14
问题内容

有没有一种方法来获取数组的迭代器?像这样:

class MyCollection implements Iterable<String> {

   String[] items;

   @Override
   public Iterator<String> iterator() {
      return items.iterator(); //obviously, it doesn't compile.
   }

}

问题答案:

您可以使用Arrays.asList

return Arrays.asList(items).iterator();

它只是将数组包装在列表实现中,以便您可以iterator()在其上调用方法。

请注意,这种方法仅适用于对象数组。对于原始数组,您将必须实现自己的迭代器(例如,使用匿名类)。

从Java
8开始,您还可以使用Arrays.stream开箱即用的迭代器(并且如果items是或int[],也可以使此代码进行编译: double[]``long[]

return Arrays.stream(items).iterator();

尽管您将无法使用原始数据类型charfloat并且short因为没有相应的流实现。但是,您可以使用以下解决方法:

return IntStream.range(0, items.length).mapToObj(i -> items[i]).iterator();


 类似资料:
  • 将这些视为对象: 查看java文档,对于LinkedList类,LinkedList类中没有迭代器方法的实现,但是,实现是在AbstractSequentialList类中。 listIterator()方法在AbstractList类中实现,AbstractSequentialList的父类,总结一下,如果我没弄错的话,它返回一个不使用节点概念的迭代器对象。 但是方法是在LinkedList类中

  • 问题内容: 我正在尝试迭代由numpy.linspace生成的值的数组: 这段代码在我的办公室计算机上工作正常,但是今天早上我坐下来在另一台机器上在家工作,出现了此错误: 只是一个浮点数数组,脚本在打印内容时没有问题-只是显然对它们进行了迭代。关于导致它损坏的原因的任何建议以及可能的解决方法? 问题答案: 给您一维NumPy数组。例如: 因此: 无法工作。您将需要某种二维数组,在第二维中具有两个元

  • 问题内容: 我正在尝试运行一个for循环。这是我遇到问题的代码部分: 因此,我的目的是遍历aldurstengd_ororka,对于字典中的每个“年龄”元组,我为元组中的每个“项目”运行另一个for循环。我得到的错误是 TypeError:“ int”对象不可迭代 问题答案: 如果是字典,则此表达式: 是一个错误。也许您的意思是: 编辑:您看到的错误是非常有趣的,我确实使用此代码段重现了它: 代码

  • 通过一个简单的数组,我可以使用标准的循环来实现: 但是如何用实物来做呢?

  • 迭代(Iteration) for..in 循环迭代一个对象上(包括它的 [[Prototype]] 链)所有的可迭代属性。但如果你想要迭代值呢? 在数字索引的数组中,典型的迭代所有的值的办法是使用标准的 for 循环,比如: var myArray = [1, 2, 3]; for (var i = 0; i < myArray.length; i++) { console.log( m

  • 可迭代(Iterable) 对象是数组的泛化。这个概念是说任何对象都可以被定制为可在 for..of 循环中使用的对象。 数组是可迭代的。但不仅仅是数组。很多其他内建对象也都是可迭代的。例如字符串也是可迭代的。 如果从技术上讲,对象不是数组,而是表示某物的集合(列表,集合),for..of 是一个能够遍历它的很好的语法,因此,让我们来看看如何使其发挥作用。 Symbol.iterator 通过自己