java - 如何在数组列表中存储字符串数组列表的哈希码

标签 java arrays hash linked-list

我需要帮助将字符串数组列表“randomNumbersStrg”的哈希码存储在另一个数组列表中。我的导师希望我们生成 100 万个随机整数,将它们转换为字符串,然后获取每个字符串的哈希码。有人可以帮我生成哈希码并将它们存储到链表中吗?这是我到目前为止所拥有的:

import java.util.*;

public class dataStuctures
{

  public static void main(String[] args)
  {  
     int MAXIMUM = 5;//initializing the maximum integer
     int MINIMUM = 1;//initializing the minimum integer

     Random randomGenerator = new Random();//initializing the generation of random integers

     int range = MAXIMUM - MINIMUM + 1;//setting the range of integers from 1 to 1,000,000

     ArrayList<Integer> randomNumbers = new ArrayList<Integer>(5);//initializing an ArrayList to store the generated random integers with the capacity of 1,000,000

     //ArrayList<String> randomNumbersStrg = new ArrayList<String>();//initializing an ArrayList to store store the generated hashcodes into a string

     for (int index = 1; index <= 5; ++index)//for loop to generate 1,000,000 random integers in a range from 1 to 1,000,000
     {
           int randomInt = randomGenerator.nextInt(range) + MINIMUM;

           randomNumbers.add(randomInt);//storing randomly generated numbers in a vector


     }//end of for loop for random number generation and storage in an ArrayList

     System.out.println("random numbers= " + randomNumbers);
     System.out.println("ArrayList size: " + randomNumbers.size());



     ArrayList<String> randomNumbersStrg = new ArrayList<String>(randomNumbers.size());
     ArrayList<String> randomNumbersHashCodes = new ArrayList<String>(randomNumbers.size());
     for (Integer myInt : randomNumbers)
     {
        randomNumbersStrg.add(String.valueOf(myInt));
        randomNumbersHashCodes.add(randomNumbersStrg.get(myInt));
     }




     // to test to make sure the integers converted
     String first = randomNumbersStrg.get(0);
     System.out.println("hash codeest = " + first.hashCode());
     String second = randomNumbersStrg.get(1);
     String third = randomNumbersStrg.get(2);
     String fourth = randomNumbersStrg.get(3);
     String fifth = randomNumbersStrg.get(4);
     System.out.println("\nfirst = " + first);
     System.out.println("second = " + second);
     System.out.println("third = " + third);
     System.out.println("fourth = " + fourth);
     System.out.println("fifth = " + fifth);


     List<String> linkedList = new LinkedList<String>();//initializing Linked List
     linkedList.addAll(randomNumbersStrg);//adding generated hashcodes to Linked List







  }//end of main method

  private static long[] randomNumbers(int index2)
  {
     // TODO Auto-generated method stub
     return null;
  }
}

最佳答案

只需使用一个 LinkedList 来存储哈希码,并使用一个 ArrayList 来存储搜索时间:

List<Integer> hashCodes = new LinkedList<>();
for (int index = 0; index < 1_000_000; ++index) {
    int randomInt = randomGenerator.nextInt(range) + MINIMUM;
    hashCodes.add(String.valueOf(randomInt).hashCode());
}

这将对哈希码执行此操作。

然后迭代 hashCodes 列表来搜索每个元素,计算需要多长时间:

List<Long> durations = new ArrayList<>(hashCodes.size());
for (int n : hashCodes) {
    long start = System.nanoTime();
    hashCodes.contains(n); // true
    long end = System.nanoTime();
    durations.add(end - start);
}

这应该可以做到。然后你有durations列表来计算平均值和标准差。祝你好运!

关于java - 如何在数组列表中存储字符串数组列表的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495982/

相关文章:

java - 类型不匹配 : cannot convert from int to int[]

ruby - 检查零值的散列

java - 如何通过json返回数据

java - eclipse 自动编译只创建包而不是类文件

javascript - 将字符串数组转换为对象数组

c# - 在 C# 中计算图像的 MD5 校验和

c++ - 如何在 unordered_map 的键中使用 std::tr1::function 对象?

java - 在 Java 中避免异常与处理异常

java - Android - BufferedOutputStream 不刷新

c - 如何在C中打印字符数组,例如Java的 'Arrays.ToString(array)'?