不使用循环从可迭代对象中获取值
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
,当然,它们没有任何size
或length
或@987654327 @ 或任何字段/方法。可能作者爱上了 Scheme 的无限列表之类的东西,但事实是你有时会遇到这样的事情。【参考方案3】:
鉴于您可以编写 for-each 循环,您的 dataset
是 Iterable<T>
。
Vartype var = dataset.iterator().next();
如果dataset
为空会抛出异常。
【讨论】:
以上是关于不使用循环从可迭代对象中获取值的主要内容,如果未能解决你的问题,请参考以下文章