2016-12-01 3 views
-2

私は仕事をしていて、レンガの壁に当たっています。私は本当に質問に取り組む方法を理解するのに苦労しています。配列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用の2番目のファイルもあります。

 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をインスタンス化し、

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++; 
     } 

    } 

すなわちdata配列にそれを配置する必要がありますが、項目を追加しながら、あなたは、データの詳細を確認し、機能を必要としています。あなたがアイテムを挿入するために、アイテム

+0

これには、System.arraycopyがあります。 – Vadim

+0

また、 'noofitems = initlen'を設定することによって、 'data'配列の長さを初期化するためにコンストラクタパラメータを使用する必要があります。カウンタを使用してアイテムを追加するたびにカウンタをインクリメントし、カウンタがアイテムの数と等しい場合はアイテムの追加を停止して、データ配列内のアイテムの数を確認し続けることができます。 – hhafeez

+0

このコードのうち、ハッシングに関連するものは何ですか? – 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; 
    } 

P.S. IMHO:Arrayを使ってHashMapをサポートするアイデアは、学術/教授の頭にしか書けません。 :-)

+0

配列がハッシュテーブルであるという事実を完全に忘れてしまった。あなたのコードは配列の最後に追加されます。そのため、1)新しいHashPair [initlen]が何をしていると思いますか?2)あなたのコードのどの部分がハッシングと関係していますか? – Andreas

+0

あなたは質問をお読みになりましたか?これは、ストレージとしてArrayを利用して「マップの種類」をバックアップする「理論的な」試みです。ハッシュについては何もありません。また、「配列はハッシュテーブルです」という意味は何ですか? – Vadim

+0

ところで、それは完全な解決策ではありません...配列がテーブルとしてどのように使用できるかを考えるヒントです... – Vadim

関連する問題