我正在尝试创建字符串到字符串的映射。以下是我尝试过但两种方法都不行。怎么了?
public class Data
{
private final Map<String, String> data = new HashMap<>();
data["John"] = "Taxi Driver";
data.put("John", "Taxi Driver");
}
答案 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
。
您可以在类的主体中使用静态Map
和static {//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");