当我只想设置'if'语句时,这两个语句之间是否有区别?map.keySet()。contains()和map.containsKey()之间的差异
// it is a HashMap
if (map.keySet().contains(myKey)) { //do something...}
if (map.containsKey(myKey)){ //do the same thing...}
当我只想设置'if'语句时,这两个语句之间是否有区别?map.keySet()。contains()和map.containsKey()之间的差异
// it is a HashMap
if (map.keySet().contains(myKey)) { //do something...}
if (map.containsKey(myKey)){ //do the same thing...}
containsKey()
更快。 keySet()
返回一个由HashMap本身支持的集合,其方法调用containsKey()
。
这是它的实现:
public final boolean contains(Object o) { return containsKey(o); }
我认为'containsKey'可能会更快,但是当唯一的区别是通过简单的方法调用进行一个额外的间接层时,性能差异就会变得微不足道。 –
@AlexisKing除非需要构造'keySet';这将是第一次这种方法被称为... –
@BoristheSpider真,但分配将是微小的,因为'KeySet'是一个非静态的内部类,所以不需要做实际的初始化。 –
这让非常小的速度差,虽然为[阿图罗(http://stackoverflow.com/a/32173684/2071828)点可能会有一些。第一行的主要缺点是它是_confusing_ - 其他开发人员会想知道为什么**您使用了非标准构造。 –