如何将值插入Map <k,v =“”>?</k,>

时间:2013-05-23 16:47:31

标签: java

我正在尝试创建字符串到字符串的映射。以下是我尝试过但两种方法都不行。怎么了?

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

4 个答案:

答案 0 :(得分:58)

这里有两个问题。

首先,您不能像在其他语言中那样使用[]语法。方括号仅适用于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");
    }
}

答案 1 :(得分:3)

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

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

第二个问题是,您无法在语法上将Map视为array,因此语句data["John"] = "Taxi Driver";应替换为data.put("John", "Taxi Driver")。 如果您的HashMap中已有“John”键,则其值将替换为“Taxi Driver”。

答案 2 :(得分:2)

语法是

data.put("John","Taxi driver");

答案 3 :(得分:2)

试试此代码

HashMap<String, String> map = new HashMap<String, String>();
map.put("EmpID", EmpID);
map.put("UnChecked", "1");