效率:Java 中的 UUID 与 int 比较

Efficiency : UUID vs int comparison in Java

请原谅这个问题太简单了。

考虑以下 class:

public class Asset {
   private int id;
   private UUID uuid;
}

如果我要根据它们的 Id 检查大量 Asset 对象的相等性,这在性能方面更有效,id vs uuid?

渐近地都是恒定时间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 的相等性又是直截了当的(==)和常数时间。