Question
This is my Java code can you help me fix the bugs in HashTable class and add run time by using ( java.time.Duration &java.time.Instant ;
This is my Java code can you help me fix the bugs in HashTable class and add run time by using (java.time.Duration &java.time.Instant; something simliar like this
Instant start = Instant.now(); methodYouWantToTime(); Instant end = Instant.now(); System.out.println(Duration.between(start, end));
) to show the run time on both(hashtable & simplelist) output ( the file is .txt file without punctuation, so you can test any file you want)
and do not change anything in Entry & SimpleList class
--------------------------------------------------------------------------------
public class Entry {
//The word to store in the Entry, this will be a key value for your hash table. private String word;
//The count of how many times the word appears. private int count;
/** * Constructor that creates an {@code Entry} object given a word. * * @param word The word to set in the {@code Entry}. */ public Entry(String word) { this.word = word; this.count = 1; }
/** * Returns the word of this {@code Entry}. * * @return The word of this {@code Entry}. */ public String getWord() { return this.word; }
/** * Returns the count of how many times this word appears in the document. * * @return the word count. */ public int getCount() { return this.count; }
/** * Increases the count of the word in this {@code Entry} by one. * */ public void incrementCount() { this.count++; }
@Override public String toString() { String result = "";
result += "Word:\t" + this.word + " " + "Count:\t" + this.count;
return result; }
public int hashCode(String str, int type) { //You must implement this method!!!! int hashValue; if(type ==1){ // primary hash hashValue = str.hashCode(); return hashValue %7; } // secondary hash function hashValue = str.hashCode(); return 7 - (hashValue % 7); } }
------------------------------------------------------------------
public class SimpleList {
//Initial size of the internal array. private static final int INITIAL_CAPACITY = 10;
//Internal array of Entry objects. private Entry[] entries;
//Size of the List private int size;
/** * Constructor creates an empty {@code SimpleList} with default initial capacity. * */ public SimpleList() { this.entries = new Entry[INITIAL_CAPACITY]; this.size = 0; }
/** * This method adds a new {@code Entry} to the end of the list. The list will also be resized when necessary. * * @param e The entry to add to the end of the list. */ public void add(Entry e) { //Check to see if we need to resize the list if (this.size == this.entries.length) { this.resize(); }
this.entries[this.size] = e; this.size++; }
/** * This function finds the {@code Entry} in the list whose word matches the given {@code String}. The function * returns the index of where the Entry can be found, or -1 if the {@code Entry} was not found. * * @param word The word whose {@code Entry} you want to find. * * @return Returns the index of where the {@code Entry} was found, -1 otherwise. */ public int find(String word) {
for (int i = 0 ; i < this.size ; i++) { Entry current = this.entries[i];
if (word.equals(current.getWord())) { return i; } }
return -1; }
/** * This method returns the {@code Entry} at the given index. * * @param index The index of the {@code Entry} to return. {@code index} must be a positive value between 0 to * size()-1 inclusive. * @return The {@code Entry} at the given index. */ public Entry getEntry(int index) { return this.entries[index]; }
/** * This method returns the number of entries in the list. * * @return The number of entries in the list. */ public int size() { return this.size; }
/** * This method will create a new list double the size of the previous, and copy all values from the old list * to the new list. */ private void resize() { Entry[] newList = new Entry[this.entries.length * 2];
for (int i = 0 ; i < this.size ; i++) { newList[i] = this.entries[i]; }
this.entries = newList; }
public String toString() { String result = "";
String formatter = "%-20s%-1d";
for (int i = 0 ; i < this.size ; i++) { Entry e = this.entries[i]; result += String.format(formatter, e.getWord(), e.getCount()) + " "; }
return result; } }
------------------------------------------------------------------
import java.util.*; import java.io.File; import java.io.FileReader; import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JFrame;
public class HashTable { //variable String[] numbers = null;
//constructor public HashTable(String[] numbers){ this.numbers = numbers; } public SimpleList generateSimpleList(){ SimpleList obj = new SimpleList(); for(int i = 0; i < numbers.length; i++){ // add number obj.add(new Entry(numbers[i])); } return obj; } private SimpleList generateHashTable(){ SimpleList obj = new SimpleList(); Entry[]elist = new Entry[numbers.length]; for(int i =0; i< numbers.length; i++){ // add number Entry entry = new Entry(numbers[i]); // get hash code int hash = entry.hashCode(numbers[i], 1); if(elist[hash]!= null){ // get hash code success elist[hash] = entry; } else{ hash = entry.hashCode(numbers[i], 2); elist[hash] = entry; } } return obj; } // main function public static void main(String args[]) throws IOException{ // read file JFrame frame = new JFrame(); JFileChooser jfchooser = new JFileChooser(); ArrayList
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started