三叔2016-11-19 15:12:28
因为foreach完全隐藏了迭代器和索引变量,避免了混乱和出错的可能。
特别是多重for循环嵌套,i j混用可能出现手误。
只要是实现了Iterable<E>接口的类都可以使用foreach。
三叔2016-11-19 15:11:06
foreach 实际上是调用的集合的迭代接口,迭代过程中集合处于锁定状态,不能追加和删除元素。所以,理论上速度会比较快一些。
for 每次都需要查看集合大小,同时其操作在多线程环境会产生数据不同步的问题。
如果在检索过程中,需要对集合进行追加,删除操作,建议使用for,同时应考虑多线程安全问题。