数组HashMap - 基本操作

时间:2016-12-01 23:55:06

标签: java 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函数开始的方向吗?我真的很茫然。

谢谢!

2 个答案:

答案 0 :(得分:-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++;
      }

  }

但在添加项目时需要对数据进行更多检查和功能。就像你需要检查插入项目的位置,并检查你的数据是否已经满了没有项目

答案 1 :(得分:-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。恕我直言:用数组支持HashMap的想法只能进入一些学术/教授的脑袋。 : - )