Java - 何时使用迭代器?

8 java architecture performance iterator

我想更好地了解何时应该而且不应该使用迭代器.对我来说,每当我有大量数据需要迭代时,我都会为它编写一个Iterator.如果它也适合Iterator接口,那么它似乎是一场胜利.

我正在阅读一点,使用Iterator会产生很多开销.

我使用迭代器的一个很好的例子是迭代一堆SQL脚本,一次执行一个查询,读取它,然后执行它.

我应该注意另一种表现权衡吗?在使用迭代器之前,我会读取整个SQL命令字符串以执行到ArrayList中,然后迭代它.如果导入相当大(就像地理位置数据一样,那么服务器往往会陷入困境).

沃尔特

Sea*_*wen 9

我认为你的问题是你应该'流'输入而不是将它全部加载到内存和进程中.这Iterator不是我想的使用与否的问题.

"这取决于",当然,虽然在你给出的例子中,它听起来像输入输入而不是将它全部加载到内存中是一个明显的胜利,所以迭代确实.

加载到内存中的好处通常是代码更简单,也许您可​​以从一次将大块加载到内存中而不是一次读取一些内容中获得一些好处."流式传输"的好处是可以限制内存需求,并获得与之相关的性能.

作为一个非常粗略的经验法则,除非我确定它低于100K左右,否则我不会将这样的内容加载到内存中.