Hash Java3哈希程序

Hash Java3哈希程序,hash,Hash,这段代码中的说明给我带来了麻烦,我不知道如何正确地遵循它们。(我们必须在有美元符号的地方编写代码。) 说明:编写重复调用HashPerformanceClass主驱动程序的代码。然后,重复代码从StatInsertions开始计算插入次数,通过增量增加插入计数,直到结束插入值 问题 我在重复调用HashPerformanceClass主驱动程序时遇到问题,我不知道该怎么办。如果有人有任何建议,我将不胜感激 public class MainClass { static int disp

这段代码中的说明给我带来了麻烦,我不知道如何正确地遵循它们。(我们必须在有美元符号的地方编写代码。)

说明:编写重复调用HashPerformanceClass主驱动程序的代码。然后,重复代码从StatInsertions开始计算插入次数,通过增量增加插入计数,直到结束插入值

问题

我在重复调用HashPerformanceClass主驱动程序时遇到问题,我不知道该怎么办。如果有人有任何建议,我将不胜感激

public class MainClass {

    static int displayResultsNo = 0;
    void displayHashResults() {

       displayResultsNo++;

       System.out.println("\nDisplay No. - "+displayResultsNo);
       System.out.println("\n\nHash Instrumented Performance:\n-----------------------------");
       System.out.println("Trials: "           + HashPerformanceClass.trials        + ", " +
                          "Insert Count: "     + HashPerformanceClass.insertCount   + ", " +
                          "Load: "             + HashPerformanceClass.payload       + ", " +
                          "Table Start Size: " + HashPerformanceClass.startingSize);

       System.out.println("\nLinear Hashing:");
       System.out.println("Insertion  Total   Probes: " + HashPerformanceClass.insertionLinearProbes)   ;
       System.out.println("Insertion  Average Probes: " + HashPerformanceClass.insertionLinearProbesAvg);

       System.out.println("\nDouble Hashing:");
       System.out.println("Insertion  Total   Probes: " + HashPerformanceClass.insertionDoubleProbes)   ;
       System.out.println("Insertion  Average Probes: " + HashPerformanceClass.insertionDoubleProbesAvg);

       System.out.println("\nPerfect Hashing:");
       System.out.println("Insertion  Total   Probes: " + HashPerformanceClass.insertionPerfectProbes)   ;
       System.out.println("Insertion  Average Probes: " + HashPerformanceClass.insertionPerfectProbesAvg);

    }//displayHashResults()

    static int displayNo = 0;
    void displayHashAvgProbesTable(int trials, int startInsertions, int endInsertions, int deltaInsertions, double load, int startSize) {

        displayNo++;

        System.out.println("\n\nDisplay No. - "+displayNo);
        System.out.println("\nAverage Number of Probes Table \n------------------------------\ntrials: "+trials+"  Load: "+load+"  Start Size: "+startSize+"\n");
        System.out.println(String.format("%-15s %-15s %-15s %-15s", "No Of Items","Linear Hash"  ,"Double Hash"  ,"Perfect Hash ") );
        System.out.println(String.format("%-15s %-15s %-15s %-15s", "Inserted"   ,"Probe Average","Probe Average","Probe Average") );
        System.out.println(String.format("%-15s %-15s %-15s %-15s", "-----------","-------------","-------------","-------------") );

        //$ write a code that repetitively invokes the HashPerformanceClass mainDriver 
        // The the repetitive code starts the number of insertions at startInsertions, increases the insert count by the deltaInsertions
        //until end insertions value


    }//displayHashAvgProbesTable()

    MainClass () {

        //$Invoke HashPerformanceClass mainDriver using arguments of insertCount=1, trials =10, payLoad=100%, Starting Size =7, display results
        HashPerformanceClass.mainDriver(  1,    1, 1.0,    7); displayHashResults();
        HashPerformanceClass.mainDriver(100,   80, 0.5,  101); displayHashResults();   //third column 1.0 = 100%
        HashPerformanceClass.mainDriver(100,   80, 0.9,  101); displayHashResults();
        HashPerformanceClass.mainDriver( 20, 1000, 0.5,  503); displayHashResults();
        HashPerformanceClass.mainDriver( 20, 1000, 1.0, 1009); displayHashResults();
        HashPerformanceClass.mainDriver( 20, 1000, 1.0, 4999); displayHashResults();
        HashPerformanceClass.mainDriver(100, 2400, 0.5, 4999); displayHashResults();


        displayHashAvgProbesTable      ( 10, 100, 2000,  100, 0.5, 1009);
        displayHashAvgProbesTable      ( 10, 100, 2500, 1000, 0.5, 4999);
        displayHashAvgProbesTable      ( 10, 100, 2500, 1000, 0.5, 4999);

    }//MainClass

    public static void main(String[] args) {
        new MainClass();    
    }//main()


}//MainClass
    ___________________________________________________________

 import java.util.*;

/**
 * A class for generating statistical information hash table insertion.
 */

public class HashPerformanceClass {

    static int   insertionLinearProbes    = 0, insertionDoubleProbes   =  0, insertionPerfectProbes    = 0;
    static float insertionLinearProbesAvg = 0, insertionDoubleProbesAvg = 0, insertionPerfectProbesAvg = 0;

    static int    trials;
    static int    insertCount;
    static double payload; 
    static int    startingSize;

    public static void mainDriver(int trials, int insertCount, double payLoad, int startingSize) {

        HashPerformanceClass.trials      = trials;
        HashPerformanceClass.insertCount = insertCount; 
        HashPerformanceClass.payload     = payLoad; 
        HashPerformanceClass.startingSize= startingSize;

        insertionLinearProbes    = insertionDoubleProbes     = insertionPerfectProbes    = 0;
        insertionLinearProbesAvg = insertionDoubleProbesAvg  = insertionPerfectProbesAvg = 0;

        //$ Declare all 3 hash table objects (linear, double, perfect) using the generic parameterized types as String and setting Starting Size from the mainDriver input parameter  
        DictionaryInstrumentedLinearImplementation <String, String>  linearHashTableObj; 
        DictionaryInstrumentedDoubleImplementation <String, String>  doubleHashTableObj; 
        DictionaryInstrumentedPerfectImplementation<String, String>  perfectHashTableObj;

        //Array used to hold random data inserted 
        String dataArray[];

        //$
        //For each trial set the inputs for the hash table Implementation
        // Generate the Random Data array using insert count, do only once for each trial so that all hash table types have same source data set

        //  For all 3 hash table types
        //    Instantiate new hash table object
        //    Set the pay load factor hashtableobject.set payload
        //    Insert all the data from the array into the table   insertalldata( , );
        //    Reset the probe counters for the hash table  insertionlinear probes +=
        //    Sum up the probe statistics
        //do this for all insertionlinearprobes double and perfect . . . 

        //$ Calculate all the insertion probes averages into the class variables for each hash type 

    }//mainDriver()

    /* Generate an array of random of pseudo words.  Each word will be composed of three randomly chosen syllables.
     * @param   arraySize    The number of strings to generate.
     * @return          The array of strings.
     */
    private static String[] generateRandomData(int arraySize) {
        String uniqueWordStringArray[] = new String[arraySize];
        DictionaryInstrumentedLinearImplementation<String,String> checkTable = new DictionaryInstrumentedLinearImplementation<String,String>();

        String firstSylStringArray [] = {"ther", "fal", "sol", "cal", "com",   "don", "gan", "tel", "fren", "ras", "tar", "men", "tri", "cap", "har"};
        String secondSylStringArray[] = {"mo",   "ta",  "ra",  "te",  "bo",    "bi",  "du",  "ca",  "dan", "sen", "di",   "no",  "fe",  "mi",  "so" };
        String thirdSylStringArray [] = {"tion", "ral", "tal", "ly",  "nance", "tor", "ing", "ger", "ten", "ful", "son",  "dar", "der", "den", "ton"};

        Random generator = new Random();

        int i=0;
        while (i < arraySize) {
            String valueString;
            valueString  = firstSylStringArray [generator.nextInt( firstSylStringArray.length) ];
            valueString += secondSylStringArray[generator.nextInt(secondSylStringArray.length) ];
            valueString += thirdSylStringArray [generator.nextInt( thirdSylStringArray.length) ];
            if (!checkTable.contains(valueString)) {
                // Have not seen pseudo word string before, so add it to the list array list
                uniqueWordStringArray[i] = valueString;
                checkTable.add(valueString,valueString);
                i++;
            }//end if
        }//while 
        return uniqueWordStringArray;
    }

    /* Insert all of the values in the array into the hash table. 
     * @param   dict The dictionary to insert all the words into.
     */
    private static void insertAllData(DictionaryInterface<String,String> dict, String[] dataArray) {        
        for (String wordString : dataArray) {
            dict.add(wordString, wordString);
        }
    }//insertAllData()

 }//HashPerformanceClass
public类MainClass{
静态int-displayResultsNo=0;
void displayHashResults(){
displayResultsNo++;
System.out.println(“\n显示编号-”+显示结果编号);
System.out.println(“\n\nHash检测的性能:\n----------------------------------------------”;
System.out.println(“试验:+HashPerformanceClass.Trials+”,“+
插入计数:“+HashPerformanceClass.insertCount+”+
加载:“+HashPerformanceClass.payload+”+
“表开始大小:”+HashPerformanceClass.startingSize);
System.out.println(“\n线性哈希:”);
System.out.println(“插入总探针:+HashPerformanceClass.insertionLinearProbes”);
System.out.println(“插入平均探针:+HashPerformanceClass.insertionLinearProbesAvg”);
System.out.println(“\n双倍哈希:”);
System.out.println(“插入总探针:+HashPerformanceClass.insertionDoubleProbes”);
System.out.println(“插入平均探针:+HashPerformanceClass.insertionDoubleProbesAvg”);
System.out.println(“\n完美散列:”);
System.out.println(“插入总探针:+HashPerformanceClass.InsertionPerfectProbe”);
System.out.println(“插入平均探针:+HashPerformanceClass.insertionPerfectProbesAvg”);
}//displayHashResults()
静态int displayNo=0;
void displayHashAvgProbesTable(int-trials、int-startInsertions、int-endInsertions、int-deltaInsertions、双重加载、int-startSize){
displayNo++;
System.out.println(“\n\n显示编号-”+显示编号);
System.out.println(“\n探头平均数表\n---------------------------------------------列:“+trials+”Load:“+Load+”开始大小:“+startSize+”\n”);
System.out.println(String.format(“%-15s%-15s%-15s%-15s%-15s”,“项数”,“线性散列”,“双散列”,“完美散列”));
System.out.println(String.format(“%-15s%-15s%-15s%-15s%-15s”,“insert”,“Probe Average”,“Probe Average”,“Probe Average”,“Probe Average”));
System.out.println(String.format(“%-15s%-15s%-15s%-15s%-15s”、“-----------”、“-----------”、“-----------”、“-----------”、“-----------”、“-----------”);
//$编写重复调用HashPerformanceClass主驱动程序的代码
//重复代码从startInsertions开始计算插入次数,通过增量增加插入计数
//直到结束插入值
}//displayHashAvgProbesTable()
主类(){
//$Invoke HashPerformanceClass mainDriver,使用insertCount=1、trials=10、payLoad=100%、起始大小=7、显示结果等参数
mainDriver(1,1,1.0,7);displayHashResults();
HashPerformanceClass.mainDriver(100,80,0.5101);displayHashResults();//第三列1.0=100%
mainDriver(100,80,0.9,101);displayHashResults();
mainDriver(20,1000,0.5,503);displayHashResults();
mainDriver(2010001.01009);displayHashResults();
mainDriver(20,1000,1.0,4999);displayHashResults();
mainDriver(10024000,0.54999);displayHashResults();
displayHashAvgProbesTable(1010020001000.51009);
displayHashAvgProbesTable(10100125001000,0.54999);
displayHashAvgProbesTable(10100125001000,0.54999);
}//主类
公共静态void main(字符串[]args){
新的main类();
}//main()
}//主类
___________________________________________________________
导入java.util.*;
/**
*用于生成统计信息哈希表插入的类。
*/
公共类HashPerformanceClass{
静态int insertionLinearProbes=0,insertionDoubleProbes=0,insertionPerfectProbes=0;
静态浮点insertionLinearProbesAvg=0,insertionDoubleProbesAvg=0,insertionPerfectProbesAvg=0;
静态int试验;
静态整数插入计数;
静态双有效载荷;
静态int启动大小;
公共静态无效主驱动器(int试验、int插入计数、双有效负载、int启动大小){
HashPerformanceClass.trials=试验;
HashPerformanceClass.insertCount=insertCount;
HashPerformanceClass.payload=有效载荷;
HashPerformanceClass.startingSize=startingSize;
insertionLinearProbes=insertionDoubleProbes=insertionPerfectProbes=0;
insertionLinearProbesAvg=insertionDoubleProbesAvg=insertionPerfectProbesAvg=0;
//$使用通用参数化类型作为字符串声明所有3个哈希表对象(线性、双精度、完美),并从mainDriver输入参数设置起始大小
词典仪表化线性化实施线性化表格OBJ;
DictionaryInstrumentedDoubleHashTableObj实现;
DictionaryInstrumentedPerfectImplementationPerfectHashTableObj;
//用于保存插入的随机数据的数组
字符串数据数组[];
//$
//对于每个试验,设置哈希表实现的输入
//生成R