我想一劳永逸地找出在哈希集合中用作键的更好和更方便的方法String还是UUID?
Map<String, Value> map = ...
Map<UUID, Value> map = ...
我想一劳永逸地找出在哈希集合中用作键的更好和更方便的方法String还是UUID?
Map<String, Value> map = ...
Map<UUID, Value> map = ...
您可以查看
hashCode类String和UUID.对于字符串:
对于UUID:
您可以看到
UUID计算哈希非常快,使用字段上的位操作。因为
String哈希是通过遍历字符串的每个字符来计算的。但这对每个对象只发生一次。一旦哈希计算了一次,它就简单地存储在一个类字段中,并在需要时返回。同时,需要注意这些类中数据存储方式的不同。在类中,
String字符串存储为值数组char。并且在类UUID中的两个字段类型中long。因此,持有StringUUID 类型的对象将占用比 UUID 本身更多的空间。每行大约有 36 个字符,即 72 字节,加上字符串长度等存储成本。虽然UUID它只有 16 个字节。因此,如果您不想使用很多键,但同时可以经常访问它们,您可以使用
String. 在其他情况下,特别是如果您需要存储很多不同的密钥,使用UUID.