Java map.keySet().contains()和map.containsKey()之间的差异

Java map.keySet().contains()和map.containsKey()之间的差异,java,Java,当我只想设置一个“if”语句时,这两个语句之间有什么区别吗 // it is a HashMap if (map.keySet().contains(myKey)) { //do something...} if (map.containsKey(myKey)){ //do the same thing...} containsKey()更快keySet()返回HashMap本身支持的集,其contains()方法调用containsKey() 这就是它的实施: public final

当我只想设置一个“if”语句时,这两个语句之间有什么区别吗

// it is a HashMap

if (map.keySet().contains(myKey)) { //do something...}

if (map.containsKey(myKey)){ //do the same thing...}
containsKey()
更快
keySet()
返回HashMap本身支持的集,其
contains()
方法调用
containsKey()

这就是它的实施:

public final boolean contains(Object o) { return containsKey(o); }

()

我认为
containsKey
可能更快,但当唯一的区别是通过简单的方法调用额外的一层间接寻址时,这种性能差异将是微不足道的。@AlexisKing除非需要构造
键集
;这将是该方法第一次被调用…@boristescapder True,但由于
KeySet
是一个非静态的内部类,因此不需要进行实际的初始化。它对速度的影响很小,尽管正如所指出的,可能存在一些差异。第一行的主要缺点是它令人困惑——其他开发人员会想知道为什么您使用了非标准的构造。