我需要在Java中使用String创建一个Unique Integer,这样碰撞机会就会少得多。
有没有办法,我们可以在Java中创建一个整数,对于同一个字符串总是唯一的?
我必须在数据库中存储缺少的字符串,所以我想转换为哈希码,以便在我解除SELECT查询的时间内检索更少的时间..
答案 0 :(得分:5)
“永远独一无二”?否。
你所说的基本上是散列,除非你的字符串没有比整数更多的信息内容(即位数),否则你不能保证唯一性。
您可以期待的最好的是一些合理平衡的加载因子,并且网上有许多通用的散列函数。
Java的Object类实际上提供了一个.hashCode()
方法,如果大多数子类需要不同的行为,它们可以覆盖这些方法。
事实上,Java's String
class does exactly that。
所以你可以简单地做一些事情:
String str = "My hovercraft is full of eels";
int code = str.hashCode();
答案 1 :(得分:0)
参见此示例
import java.io.*;
public class Test {
public static void main(String args[]) {
String Str = new String("Welcome to Tutorialspoint.com");
System.out.println("Hashcode for Str :" + Str.hashCode() );
}
}
如果srring相同则会生成相同的哈希码Reference。
您也可以查看它 How to generate a unique hash code for string input in android...?
答案 2 :(得分:-1)
循环字符串并从字符串中获取一个字符并获取每个章程的ascii并组合ascii。它会给出唯一的整数。下面是如何从角色获取ascii的代码。
String name = "admin";
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.