Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigInteger;
- import java.util.ArrayList;
- import java.util.Set;
- import java.util.HashSet;
- public class HashCodeForString{
- public static void main(String[] args) {
- // Create a hash set
- Set<String> set = new HashSet<>();
- // Add strings to the set
- // set.add("az");
- // set.add("Java");
- // set.add("Programming");
- set.add("Justin Clark");
- //ArrayList<String> myArrayList = setToList(set);
- // Display the hash code for each element in the array list
- for (String str : set) {
- System.out.println("The hash code for \"" + str + "\" = "+ hashCodeForString(str));
- }
- }
- // Return a hash code for a string
- public static int hashCodeForString(String s) {
- int myhash = 0;
- //Algorithm: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
- for (int i = 0; i < s.length(); i++){
- int n = s.length() - (i + 1);
- BigInteger exp = BigInteger.valueOf(31);
- exp = exp.pow(n);
- myhash += (exp.multiply(BigInteger.valueOf(s.charAt(i))).intValue());
- }
- int realHash = s.hashCode();
- return myhash;
- }
- public static int testHashCode(String s) {
- //Modified hash version found online.
- //Supposedly the version java uses internally for String objects
- //Found at http://java-bytes.blogspot.com/2009/10/hashcode-of-string-in-java.html
- int h = 0;
- for (int i = 0; i < s.length(); i++) {
- h = 31*h + s.charAt(i);
- }
- return h;
- }
- // Return an ArrayList from a set
- public static <E> ArrayList<E> setToList(Set<E> s) {
- ArrayList<E> mylist = new ArrayList<E>();
- for(E i : s)
- mylist.add((E) i);
- return mylist;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement