Question
This is my code..... and it is a word count generator but I havent finished yet... Can you add Measure RunTime by using java.time.Duration; java.time.Instant
This is my code..... and it is a word count generator
but I havent finished yet... Can you add Measure RunTime by using
java.time.Duration;
java.time.Instant
for both SimPleList and HashTable result
and make it wring on 2 .txt file for HashTable and SimpleList It should very cleanly show the data of each entry (word and its count). The output should be sorted alphabetically. (Do not include the sorting in the time measurement.)
and adjust my table should keep track of a Load Factor. When the computed load factor is higher than the threshold you decide upon, you will need to resize and rehash your table.
Think very carefully about what the initial size of the table should be, the initial size is not allowed to be anything over 20 to start.
but Do not alter SimpleList & Entry 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; } } for(int i =0; i < numbers.length; i ++){ obj.add(elist[i]); } return obj; } // main function public static void main(String args[]) throws IOException{ // read file JFrame frame = new JFrame(); JFileChooser jfchooser = new JFileChooser(); //ArrayList list = new ArrayList<>(); // jfchooser.showOpenDialog(null); String[] list = new String[10]; int count = 0; jfchooser.showOpenDialog(frame); File selFile = jfchooser.getSelectedFile(); FileReader reader= new FileReader(selFile); Integer num = 1; num = reader.read(); while (num != -1){ //num = reader.read(); //list.add(String.valueOf(num)); //System.out.println(list); if(count >= list.length){ String[] newList = new String[count *2]; for(int i = 0; i< count; i++){ newList[i] = list[i]; } list = newList; } list[count] = num.toString(); num = reader.read(); count++; } // creating object HashTable obj = new HashTable(list); obj.generateSimpleList(); obj.generateHashTable(); } }
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