Java 如何从唯一的字符串生成唯一的long?

Java 如何从唯一的字符串生成唯一的long?,java,arrays,byte,bytebuffer,Java,Arrays,Byte,Bytebuffer,我有一种情况,JSON中的每个对象都有一个与之关联的唯一字符串。我需要把它变成一个独特的长。这是我目前正在使用的代码,但我不知道它是否有效,或者我是否正确使用了这些类 public long getUniqueId() { final byte[] vinStrBytes = vin.getBytes(); final ByteBuffer byteBuffer = ByteBuffer.wrap(vinStrBytes); return byteBuffer.getLong();

我有一种情况,JSON中的每个对象都有一个与之关联的唯一字符串。我需要把它变成一个独特的长。这是我目前正在使用的代码,但我不知道它是否有效,或者我是否正确使用了这些类

public long getUniqueId() {
  final byte[] vinStrBytes = vin.getBytes();
  final ByteBuffer byteBuffer = ByteBuffer.wrap(vinStrBytes);
  return byteBuffer.getLong();
}
具体来说,我关心的是
long
也是唯一的,可以用来识别对象

字符串是车辆识别号,如
“WME4513341K416232”


在Android中,列表需要一个
long
作为唯一标识符。

您是在更改JSON对象内部的数据,还是在JSON外部为某个容器使用唯一的long?您能给出一个字符串的示例吗?如果长度不长,可以使用
hashCode()
(但这是
int
类型)后者,在JSONhashCode之外使用的长度不是唯一的!永远不要使用它。顺便说一句,使用long-as-unique标识符根本不是一个好主意。如果您已经有全局唯一标识符,为什么需要它?很抱歉,您将无法保证唯一的长值。可能的
字符串
值多于长值。我建议您了解可能的车辆注册号,并专门为其创建一个映射。您是在更改JSON对象内的数据,还是在某个容器中使用JSON对象外的唯一长字符串?您能否给出一个字符串示例?如果长度不长,可以使用
hashCode()
(但这是
int
类型)后者,在JSONhashCode之外使用的长度不是唯一的!永远不要使用它。顺便说一句,使用long-as-unique标识符根本不是一个好主意。如果您已经有全局唯一标识符,为什么需要它?很抱歉,您将无法保证唯一的长值。可能的
字符串
值多于长值。我建议了解可能的车辆登记号码,并专门为其绘制地图。