21

我正在尝试创建字符串到字符串的映射。以下是我尝试过的方法,但两种方法都不起作用。它出什么问题了?

public class Data
{
    private final Map<String, String> data = new HashMap<>();
    data["John"] = "Taxi Driver";
    data.put("John", "Taxi Driver");
}
4

4 回答 4

61

这里有两个问题。

首先,您不能[]像在其他语言中那样使用语法。方括号仅适用于 Java 中的数组,因此只能与整数索引一起使用。

data.put是正确的,但这是一个语句,因此必须存在于方法块中。只有字段声明可以存在于类级别。这是一个示例,其中所有内容都在方法的本地范围内:

public class Data {
     public static void main(String[] args) {
         Map<String, String> data = new HashMap<String, String>();
         data.put("John", "Taxi Driver");
         data.put("Mark", "Professional Killer");
     }
 }

如果要将映射初始化为类的静态字段,则可以使用Map.of,因为 Java 9:

public class Data {
    private static final Map<String, String> DATA = Map.of("John", "Taxi Driver");
}

在 Java 9 之前,您可以使用静态初始化程序块来完成同样的事情:

public class Data {
    private static final Map<String, String> DATA = new HashMap<>();

    static {
        DATA.put("John", "Taxi Driver");
    }
}
于 2013-05-23T16:50:34.393 回答
3

语法是

data.put("John","Taxi driver");
于 2013-05-23T16:49:31.417 回答
3

您在代码中遇到的两个错误非常不同。

第一个问题是您Map在没有声明的情况下初始化并填充类的主体。您可以在类的主体中包含静态Mapstatic {//TODO manipulate Map}语句,或者在方法或类的构造函数中初始化和填充 Map。

第二个问题是你不能在Map句法上把 a 当作一个array,所以这个语句data["John"] = "Taxi Driver";应该被替换为data.put("John", "Taxi Driver")。如果您的 中已有“John”键HashMap,则其值将替换为“Taxi Driver”。

于 2013-05-23T16:52:49.623 回答
2

试试这个代码

HashMap<String, String> map = new HashMap<String, String>();
map.put("EmpID", EmpID);
map.put("UnChecked", "1");
于 2013-05-23T16:49:43.163 回答