Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Iterable的优点和缺点_Java_Optimization_Coding Style - Fatal编程技术网

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
对你的客户来说是一项很好的服务

归还往往会对他们造成伤害。如果您不打算改变您对使用什么集合来实现结果的想法,那么您应该尽可能具体