Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class PearsonHash implements HashFunction<String> {
- private Character[] charArray1 = new Character[256];
- private Character[] charArray2 = new Character[256];
- public PearsonHash() {
- charArray1 = createTable();
- charArray2 = createTable();
- }
- private Character[] createTable() {
- ArrayList<Character> myArrayList = new ArrayList<Character>(256);
- for (int i = 0; i < 256; i++) {
- char charact = (char) i;
- myArrayList.add(charact);
- }
- java.util.Collections.shuffle(myArrayList);
- Character[] characterArray = new Character[256];
- myArrayList.toArray(characterArray);
- return characterArray;
- }
- @Override
- public int hash(String key) {
- int len = key.length();
- int hash1 = len;
- int hash2 = len;
- for (int i = 0; i < len; i++) {
- char curChar = ((String) key).charAt(i);
- int index1 = hash1 ^ curChar;
- hash1 = charArray1[index1];
- int index2 = hash2 ^ curChar;
- hash2 = charArray2[index2];
- }
- return ((hash1 << 16) | (hash2 << 8) | hash1);
- }
- }
Add Comment
Please, Sign In to add comment