效率:Java中的UUID与INT比较



如果这太简单的问题。

考虑以下类:

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

如果我要根据其ID检查大量资产对象的平等,这在性能方面更有效,ID与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的平等再次是直接的(==)和恒定时间。

最新更新