For my assignment we need to create a HashTable of Strings, I've created one using integers and it works perfectly, but I'm running into trouble now.
I keep getting java.lang.NumberFormatExceptions for my inputted Strings and I'm not sure why this is happening. Here's the code I am using for my HashTable class;
public class HashTable { private SortedList[] hashArray; private int arraySize; public HashTable(int size) { arraySize = size; hashArray = new SortedList[arraySize]; for(int i = 0; i < arraySize; i++) { hashArray[i] = new SortedList(); } } // END HashTable() public void displayTable() { for(int i = 0; i < arraySize; i++) { System.out.print(i + ". "); hashArray[i].displayList(); } } // END displayTable() public int hash(String key) { int hashkey = Integer.parseInt(key); return hashkey % arraySize; } // END hash() public void insert(Link link) { String key = link.getKey(); int hashVal = hash(key); hashArray[hashVal].insert(link); } // END insert() public void delete(String key) { int hashVal = hash(key); hashArray[hashVal].delete(key); } // END delete() } // END HashTable This is the code for the List:
public class SortedList { private Link first; public void SortedList() { first = null; } //END SortedList() public void insert(Link link) { String key = link.getKey(); Link previous = null; Link current = first; while(current != null && key.compareTo(current.getKey()) > 0) { previous = current; current = current.getNext(); } if(previous == null) { first = link; } else { previous.setNext(link); link.setNext(current); } } // END insert() public void delete(String key) { Link previous = null; Link current = first; while(current != null && !key.equals(current.getKey())) { previous = current; current = current.getNext(); } if(previous == null) { first = first.getNext(); } else { previous.setNext(current.getNext()); } } // END delete() public Link find(String key) { Link current = first; while(current != null && current.getKey().compareTo(key) <= 0) { if(current.getKey().equals(key)) { return current; } current = current.getNext(); } return null; } // END find() public void displayList() { System.out.print("List (first -> last): "); Link current = first; while(current != null) { current.displayLink(); current = current.getNext(); } System.out.println(); } // END displayList() } //END SortedList() The Link class is just a basic one, I get thrown the error on the line:
int hashkey = Integer.parseInt(key); In the hash function, in my HashTable class.
EDIT: From what I understand that I am being asked to do, I need to convert the String into an integer, and then perform the hash function to get the index for its position.