2016-12-01 110 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