首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中获取Iterable的大小

在Java中获取Iterable的大小
EN

Stack Overflow用户
提问于 2012-07-22 17:06:25
回答 7查看 113.1K关注 0票数 100

我需要计算出Java中Iterable中元素的数量。我知道我能做到:

Iterable values = ...
it = values.iterator();
while (it.hasNext()) {
  it.next();
  sum++;
}

我也可以这样做,因为我不再需要Iterable中的对象了:

it = values.iterator();
while (it.hasNext()) {
  it.remove();
  sum++;
}

一个小规模的基准测试没有显示出太多的性能差异,对这个问题有什么评论或其他想法吗?

EN

回答 7

Stack Overflow用户

发布于 2013-11-01 20:39:32

这可能有点晚了,但可能会对某些人有所帮助。我在我的代码库中遇到了类似的Iterable问题,解决方案是在不显式调用values.iterator();的情况下使用for each

int size = 0;
for(T value : values) {
   size++;
}
票数 19
EN

Stack Overflow用户

发布于 2016-01-13 21:31:26

您可以将迭代器转换为列表,然后对其使用.size()。

Lists.newArrayList(iterable).size();

为清楚起见,上述方法将需要以下导入:

import com.google.common.collect.Lists;
票数 7
EN

Stack Overflow用户

发布于 2012-07-22 17:33:16

严格地说,Iterable没有大小。把数据结构想象成一个循环。

考虑一下下面的Iterable实例,没有大小:

    new Iterable(){

        @Override public Iterator iterator() {
            return new Iterator(){

                @Override
                public boolean hasNext() {
                    return isExternalSystemAvailble();
                }

                @Override
                public Object next() {
                    return fetchDataFromExternalSystem();
                }};
        }};
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11598977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档