【发布时间】:2011-02-22 13:43:42
【问题描述】:
性能方面,使用之间真的有很大区别吗:
- ArrayList.contains(o) 与 foreach|iterator
- LinkedList.contains(o) 与 foreach|iterator
当然,对于 foreach|iterator 循环,我必须明确比较方法并相应地返回 true 或 false。
我要比较的对象是 equals() 和 hashcode() 都被正确覆盖的对象。
编辑:毕竟不需要知道 containsValue,对此感到抱歉。是的,我很愚蠢......我意识到我的问题是关于 containsKey 与 foreach 的愚蠢,别管那个,我不知道我在想什么。我基本上想知道上面的那些(删掉了其他的)。
【问题讨论】:
-
不用担心 - 这样的问题会更有趣。 :)
-
使用
.contains(o)与循环的另一个原因是,正如答案中所见,循环的方式取决于集合类型,而 contains() 适用于任何集合。您根本不在乎它是 ArrayList 还是 LinkedList,甚至是 List;但是您仍然坚持使用地图的.containsKey(k)或containsValue(v)二分法。 -
对于
LinkedList,contains的速度大约是 for-each 的两倍(参见 stackoverflow.com/questions/2804250/…)
标签: java list iterator foreach contains