请原谅这是一个太简单的问题。
考虑以下课程:
public class Asset {
private int id;
private UUID uuid;
}
如果我根据他们的Id来检查大量Asset对象的相等性,这在性能方面更有效,id vs uuid?
答案 0 :(得分:1)
渐近两者都是恒定时间O(1)
比较。
UUID
维持最重要的64位和最低64位并比较它们。这是equals()
方法。
public boolean equals(Object obj) {
if ((null == obj) || (obj.getClass() != UUID.class))
return false;
UUID id = (UUID)obj;
return (mostSigBits == id.mostSigBits &&
leastSigBits == id.leastSigBits);
}
整数平等也是恒定时间。
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
但应注意UUID
比较包括2 long
类型字段的比较。
编辑:感谢Chai T. Rex提到该问题询问int
因此,两个int
的相等性再次直截了当(==)和恒定时间。