如何在java类中创建hashmap

时间:2016-01-27 10:03:51

标签: java class hashmap

这是我的代码。我的目的是创建一个包含4个值的hashmap,然后将该类导出为jar,将其添加到另一个项目,并在那里使用hashmap值。

我在所有“hmap.put”中收到错误。我无法理解我做错了什么。请帮忙。

    import java.util.HashMap;

    public class MyFirstClass {

    private HashMap<Integer, String> hmap = new HashMap<Integer, String>();

    hmap.put(2, "Jane");
    hmap.put(4, "John");
    hmap.put(3, "Klay");
    hmap.put(1, "Deena");

    public HashMap<Integer, String> gethmap()
   {
        return this.hmap;
   }

    public void sethmap(HashMap hmap)
   {
        this.hmap = hmap;
   }

   }

6 个答案:

答案 0 :(得分:2)

Java不允许执行任何方法,字段初始化或静态块范围之外的任何语句 - 这就是您收到错误的原因。

我想,你的意图是用这四行做一些初始化。 Java支持这种类型的初始化 - 它是类构造函数。所以正确的代码如下所示:

import java.util.HashMap;

public class MyFirstClass {
  private HashMap<Integer, String> hmap = new HashMap<Integer, String>();

  // this is a constructor
  public MyFirstClass() {
    hmap.put(2, "Jane");
    hmap.put(4, "John");
    hmap.put(3, "Klay");
    hmap.put(1, "Deena");
  }

  // here goes your other code
}

这样,使用new MyFirstClass()创建的MyFirstClass的每个对象都将包含您在构造函数中放置的数据。

您可以在官方文档中阅读有关Java中构造函数的更多信息:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

答案 1 :(得分:2)

有多种方法可以做到这一点。最简单的方法是在put语句中添加括号:

import java.util.HashMap;

public class MyFirstClass {
    private HashMap<Integer, String> hmap = new HashMap<Integer, String>();

    {
        hmap.put(2, "Jane");
        hmap.put(4, "John");
        hmap.put(3, "Klay");
        hmap.put(1, "Deena");
    }

    public HashMap<Integer, String> gethmap() {
        return this.hmap;
    }

    public void sethmap(HashMap hmap) {
        this.hmap = hmap;
    }
}

答案 2 :(得分:2)

import java.util.HashMap;

public class MyFirstClass {

    private HashMap<Integer, String> hmap = new HashMap<Integer, String>() {

        {
            hmap.put(4, "John");
            hmap.put(3, "Klay");
            hmap.put(1, "Deena");
        }
    };

    public HashMap<Integer, String> gethmap() {
        return this.hmap;
    }

    public void sethmap(HashMap<Integer, String> hmap) {
        this.hmap = hmap;
    }

}

以上代码将帮助您获得所需的结果。您还应注意,您不能直接在类中使用实例变量。你必须只使用那个内部方法。

答案 3 :(得分:1)

您应该在班级中添加constructor

public MyFirstClass() {
    this.hmap = new HashMap<Integer,String>();
    // you can do .put here if you wish
}

并将hmap字段更改为:

private HashMap<Integer, String> hmap;

答案 4 :(得分:1)

您正在使用方法之外的方法。你不能在类中但在方法之外调用Hashmap.put - 如前所述,你想在类的构造函数中做到这一点

public class MyFirstClass {
    public MyFirstClass() { //put it here }
}

答案 5 :(得分:1)

您可以将其放在静态块中,如下所示:

private static final Map<Integer, String> NAME_MAP = new HashMap<Integer, String>() {
    private static final long serialVersionUID = 1L;

    {
        NAME_MAP.put(2, "Jane");
        NAME_MAP.put(4, "John");
        NAME_MAP.put(3, "Klay");
        NAME_MAP.put(1, "Deena");
    }
};