不使用循环从可迭代对象中获取值

Posted

技术标签:

【中文标题】不使用循环从可迭代对象中获取值【英文标题】:Getting values from an iterable object without using a loop 【发布时间】:2012-12-14 14:46:54 【问题描述】:

在 Java 中,如何在不循环的情况下从可迭代对象中检索元素?

【问题讨论】:

这取决于数据集的类型。 您检查过您的数据集的 API 吗? 请在此处发布真实代码。 【参考方案1】:

这是一种双刃剑。由于我们不知道Vartype 是什么,因此我们无法隐含地告诉您它是否不可变。

如果它没有改变,你可以把它当作一个单例并访问它的第一个元素。

var.get(0);

如果尺寸可以改变,那么你会想继续使用增强型。

【讨论】:

【参考方案2】:
if(dataset.size() == 1)
   number = dataset.get(0); //if collections

if(dataset.length == 1)
number = dataset[0];    //if array

【讨论】:

@hexacyanide 你正在使用它,你不知道吗?查看任何类似的值,或者您可以通过一个 for-each 循环来计算它的大小。 我见过Iterable<T>的无限实现——hasNext()的迭代器总是返回true,当然,它们没有任何sizelength或@987654327 @ 或任何字段/方法。可能作者爱上了 Scheme 的无限列表之类的东西,但事实是你有时会遇到这样的事情。【参考方案3】:

鉴于您可以编写 for-each 循环,您的 datasetIterable<T>

Vartype var = dataset.iterator().next();

如果dataset为空会抛出异常。

【讨论】:

以上是关于不使用循环从可迭代对象中获取值的主要内容,如果未能解决你的问题,请参考以下文章

python迭代器 iterator

python第二阶段第五天额外增加

函数进阶之迭代器,递归

如何在刀片foreach循环中获取迭代次数

构成可迭代对象的要素

四:迭代器生成器