【问题标题】:how can I implement the constructor of a hashtable in java如何在java中实现哈希表的构造函数
【发布时间】:2015-05-02 16:54:46
【问题描述】:

假设我需要自己实现一个哈希表,但我在实现构造函数时遇到了一些问题。例如,如果我需要初始化 List[] 存储桶,但是当我编写如下代码时,计算机只是给出了错误的信号“buckets[i]=new List()”,有人可以告诉我如何完成在这种情况下构造函数? 导入 java.util.List;

import java.util.LinkedList;

public class GeneralHashMap extends MyHashMap {

  public List< String>[] buckets;

  public GeneralHashMap() {
    for(int i=0;i<120;i++)
    {
        buckets[i]=new List<String>(); 
    }

    // TODO: IMPLEMENT CONSTRUCTOR

  }


  public GeneralHashMap(int newsize)
  {
    for(int i=0;i<newsize;i++)
    {
        buckets[i]=new List<String>();
    }
  }

  @Override
  protected int hash(String token) {

    // TODO: IMPLEMENT HASHING FUNCTION FOR GENERAL HASHMAP
    return -1;

  }

  @Override
  public void add(String token) {

    // TODO: IMPLEMENT ADD METHOD USING BUCKETS

  }

  @Override
  public void display() {

    // TODO: IMPLEMENT DISPLAY METHOD TO SHOW CONTENTS OF ALL BUCKETS

  }

}

【问题讨论】:

  • 我想设置一个列表列表,这样我就可以在每个存储桶中存储字符串,但是我在实现构造时遇到了一些问题

标签: java hashmap hashtable


【解决方案1】:

在Java中List只是一个不能被实例化的接口。您需要的是一个实现此类接口的类,例如ArrayList。试试

buckets = new List[120];
for(int i=0;i<120;i++)
{
    buckets[i]=new ArrayList<String>(); 
}

【讨论】:

  • 还值得一提的是 new List[120] 的初始化,而不仅仅是包含它。第二个构造函数也需要一个。
【解决方案2】:

在填写之前正确初始化您的public List&lt; String&gt;[] buckets;

public List< String>[] buckets = new ArrayList< String>[120];

【讨论】:

  • 如果 size > 120 被传递,这对第二个构造函数不起作用 - 你应该在构造函数中初始化
  • 哎呀,你是对的,没有看到其他构造函数
  • 哦,List 不是一个类,所以你需要一个具体的实现
  • 还有new ArrayList&lt; String&gt;[120]; 无效...见stackoverflow.com/questions/3903196/…
猜你喜欢
  • 2011-02-27
  • 2016-05-24
  • 2011-01-19
  • 2016-03-25
  • 2021-09-14
  • 2013-05-31
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
相关资源
最近更新 更多