Java Iterable的优点和缺点
接受和返回Java Iterable的优点和缺点,java,optimization,coding-style,Java,Optimization,Coding Style,接受和返回Iterable类型的Java方法非常常见。我看到的问题是迭代器非常有限,它要么需要将Iterable重新构造成可用的数据结构,要么迫使用户执行Iterable的多次遍历,从而增加执行时间 有人能纠正我这一点吗?伊特拉伯雷有我想象的那么糟糕吗?如果你被迫使用Iterables,有没有什么技巧可以用来克服它的局限性?关于接受一个Iterables这显然是一件好事。这意味着您几乎可以传递任何数据结构-它只需要实现非常简单的Iterable接口。这使得代码更易于重用 对于返回Iterable
Iterable
类型的Java方法非常常见。我看到的问题是迭代器非常有限,它要么需要将Iterable重新构造成可用的数据结构,要么迫使用户执行Iterable的多次遍历,从而增加执行时间
有人能纠正我这一点吗?伊特拉伯雷有我想象的那么糟糕吗?如果你被迫使用Iterables,有没有什么技巧可以用来克服它的局限性?关于接受一个Iterables
这显然是一件好事。这意味着您几乎可以传递任何数据结构-它只需要实现非常简单的Iterable
接口。这使得代码更易于重用
对于返回Iterable
,其中一个优点是该方法的实现可能会改变-可能使用更有效的数据结构,或者根据请求延迟生成结果(例如,从磁盘流式传输)。在不中断客户机的情况下很容易更改实现,因为它们只依赖于Iterable
接口。如果您公开了一个列表
,那么您无法确定您的客户机是否会按顺序访问数据
您是对的,如果您需要多次访问结果,那么首先将数据复制到不同的结构中是有意义的。但只有你知道什么样的收藏对你的具体情况最有用。有时它可能是一个数组列表
。其他时候,您可能更喜欢将项目存储在HashMap
中。因此,您通常必须将数据复制到新的数据结构中。此外,在中,我们将看到Iterable
界面的重大改进
通过添加,接口将提供默认实现,并将添加许多新函数,以提供与能够接受的高阶函数等效的功能,此外,由于其迭代性质,更不用说并行性,也将实现,所以现在流行起来。接受
Iterable
对你的客户来说是一项很好的服务
归还往往会对他们造成伤害。如果您不打算改变您对使用什么集合来实现结果的想法,那么您应该尽可能具体