2 qq 27836205 qq_27836205 于 2017.09.08 23:49 提问

java集合遍历hasnext增强for普通for还有map的entryset和keyset效率问题

java集合set,list, map的几种遍历 hasnext, 增强for循环, 普通for循环, 还有map的entryset和keyset哪种效率高(应该问哪种集合用哪种遍历方式效率高一点)

2个回答

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.09 09:43
已采纳
Small_Mouse0
Small_Mouse0 回复Jordan裔: 看了下foreach,原理起始是按迭代器访问的iterator,,set用迭代器效率高,set没有作引(类似数组那种,a[i]),,map需要转成set遍历,,,set使用迭代器效率高那么map也是转set,迭代器遍历
2 个月之前 回复
Small_Mouse0
Small_Mouse0 回复Jordan裔: 遍历数组和链表那个快?仅仅说遍历的话其实差不多,,for循环遍历list,每次get(i),相当于去数组里找,,迭代器遍历list,相当于链表依次访问每个节点
2 个月之前 回复
qq_27836205
qq_27836205 是不是就是说 list的话用for效率高一点,set的话用增强for循环效率高一点,map的话就用entryset效率高一点
2 个月之前 回复
Small_Mouse0
Small_Mouse0 回复Jordan裔: set底层是map实现的,,,list比较简单,for循环遍历和迭代器差不多,,list遍历和数组,链表遍历一样,,,map比较复杂,,
2 个月之前 回复
qq_27836205
qq_27836205 而且最基本的for循环也没讲到啊 难道for是性能最差的吗
2 个月之前 回复
qq_27836205
qq_27836205 这只是map的 那list 和 set的呢
2 个月之前 回复
caozhy
caozhy   Ds   Rxr 2017.09.09 08:55

从遍历的角度看,内置的迭代器(next方法)应该是最好的,但是对于线性结构(比如list),for循环性能不比迭代差。
增强(迭代)for循环是语法糖,和调用迭代器在底层字节码上是一样的。
keyset理论上更快。

http://blog.csdn.net/liu826710/article/details/9001254

Csdn user default icon
上传中...
上传图片
插入图片