Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保新生的ID是唯一的_Java_Io_Hashmap_Hashset_Bluej - Fatal编程技术网

Java 如何确保新生的ID是唯一的

Java 如何确保新生的ID是唯一的,java,io,hashmap,hashset,bluej,Java,Io,Hashmap,Hashset,Bluej,我正在读取一个文件,该文件将id设置为未知,我为每个学生创建了一个uniqe id,然后我将其写入一个文件,例如,如果创建学生并将其添加到列表中(HashMap)。如何确保已分配给新学生的id尚未分配给文件Student_data.txt中的某个学生? 如何确保新学员的ID不在txt文件中,该文件包含已添加到hashMap的旧学员为什么不从学员的姓名或其他字段中创建一个SHA-1并将其用作密钥 static HashFunction hashFunction = Hashing.sha1();

我正在读取一个文件,该文件将id设置为未知,我为每个学生创建了一个uniqe id,然后我将其写入一个文件,例如,如果创建学生并将其添加到列表中(HashMap)。如何确保已分配给新学生的id尚未分配给文件Student_data.txt中的某个学生?
如何确保新学员的ID不在txt文件中,该文件包含已添加到hashMap的旧学员

为什么不从学员的姓名或其他字段中创建一个SHA-1并将其用作密钥

static HashFunction hashFunction = Hashing.sha1();
public static byte[] getHash(final String name) {
  HashCode hashCode = hashFunction.newHasher().putBytes(name.getBytes).hash();
  return hashCode.asBytes();
}
我使用谷歌库来实现这一点,你也可以使用
MessageDigest
,但它不是线程安全的

读取散列

System.out.println("Hash is: " + new String(Hex.encodeHex(hashInByte)));
输出如下所示:

Hash is: ff56b9948d201ee37605e101e01f63aab97b5e4a

您使用的是哪种ID?
nextId=1
addStudent(){hashmap.add(student,nextID++)}
始终递增
nextID
,并使
nextID
持久化。由随机类生成的ID,例如“AB-1212”,我想我必须先读取该文件,然后将其存储在一个局部变量中,然后将其与为新学生生成的新Id进行比较,但我不确定如何进行比较。谢谢。我建议您从.txt中读取现有Id,然后使用
containsKey()
检查密钥是否已存在。在没有看到您的实现的情况下,很难给出一个好的建议,但我想阅读文件并存储,并将其与新的泛化idOf进行比较。当然,您可以这样做。只需将散列读取为十六进制。不良更新