2016-12-01 44 views
-2

我正在做一件工作,并且撞到了一堵砖墙。我真的很难理解如何解决这些问题。Array HashMap - 基本操作

我给出的基本代码是一个HashMap的构造函数。它将字符串数据类型用于键和值,并将它们存储在数组中。代码如下所示:

注意:我不能使用任何软件包。

public class HashMap 
    { 
     private long noofitems; 
     private HashPair[] data; 

     public HashMap(int initlen) 
     { 
     noofitems=0; 
     data=new HashPair[initlen]; 
     } 

     public void AddItem(String key, String value) 
     { 

     } 

     public String GetValue(String key) 
     { 
     return null; 
     } 
    } 

还有第二个文件是用于存储值的HashPair。

 public class HashPair 
    { 
     public String key, value; 

     public HashPair(String key, String value) 
     { 
     this.key=key; 
     this.value=value; 
     } 

     public String GetKey() 
     { 
     return key; 
     } 

     public String GetValue() 
     { 
     return value; 
     } 

请问有人可以给我一些方法,从哪里开始使用AddItem函数?我真的很茫然。

谢谢!

+1

欢迎堆栈溢出!看起来你正在寻求作业帮助。虽然我们与本身没有任何问题,请遵守这些[该做什么和不该做什么(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),并相应地编辑您的问题。 –

回答

-2

首先,您的代码缺少结尾括号HashPair类。您需要实例HashPair并把它放在data阵列即

private long noofitems; 
    public HashPair[] data; 
    int counter = 0; 

    public HashMap(int initlen) 
    { 
    noofitems = initlen; 
    data=new HashPair[initlen]; 
    } 

    public void AddItem(String key, String value) 
    { 
     HashPair item = new HashPair(key, value); 
     if(counter< noofitems) 
     { 
      data[counter] = item; 
      counter++; 
     } 

    } 

但你需要的数据更多的检查和功能,同时添加项目。像你需要检查什么位置插入项目,并检查您的数据已经完全未给出项目

+0

没必要,那里有System.arraycopy。 – Vadim

+0

另外,您需要使用构造函数参数来设置'noofitems = initlen'来初始化'data'数组的长度。您可以使用计数器在每次添加项目时递增计数器,并在计数器等于项目数量时停止添加项目,以便始终检查数据数组中的项目数量。 – hhafeez

+0

该代码的哪一部分与hashing有什么关系? – Andreas

-2

这就是:

public void AddItem(String key, String value) 
    { 
     HashPair[] tmpData = new HashPair[this.data.length + 1]; 
     System.arraycopy(this.data, 0, tmpData, 0, this.data.length); 
     // set new last elements data 
     tmpData[tmpData.length - 1] = new HashPair(key, value);   
     // replace data with newly created tmpData array 
     this.data = tmpData; 
    } 

附:恕我直言:想用Array来支持HashMap只能进入一些学术/教授的脑袋。 :-)

+0

你完全错过了数组是哈希表的事实。你的代码只是追加到数组的末尾,所以1)你认为'new HashPair [initlen]'在做什么,2)你的代码的哪一部分有*与散列有关的任何事情? – Andreas

+0

你读过一个问题吗?这是“理论”的尝试,使阵列作为存储支持“种类图”。没有关于散列。另外你是什么意思“数组是哈希表”? – Vadim

+0

顺便说一句:它不是一个完整的解决方案......这是一个暗示,想想如何使用数组作为表... – Vadim