效率:Java中的UUID与int比较

时间:2017-03-03 05:59:40

标签: java uuid

请原谅这是一个太简单的问题。

考虑以下课程:

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

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

1 个答案:

答案 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的相等性再次直截了当(==)和恒定时间。