Java 字典作为类的不同实例的引用
我正试图找到以下问题的解决方案: 我有一个类Alert,它被创建了很多次,它的实例显示为:List类型的字段。 其中一个警报字段假设使用一个映射,该映射是一个预定义的字典,该项从不更改。 如何配置映射,使其不必在每次创建警报时创建 意思是:Java 字典作为类的不同实例的引用,java,dictionary,Java,Dictionary,我正试图找到以下问题的解决方案: 我有一个类Alert,它被创建了很多次,它的实例显示为:List类型的字段。 其中一个警报字段假设使用一个映射,该映射是一个预定义的字典,该项从不更改。 如何配置映射,使其不必在每次创建警报时创建 意思是: public class Alerts { private List<Alert> list; . . . public Alerts() { list = new ArrayList<
public class Alerts {
private List<Alert> list;
.
.
.
public Alerts() {
list = new ArrayList<Alert>();
for (...) {
Alert alert = new Alert();
list.add(alert);
}
}
}
public class Alert() {
private String str = "";
.
.
.
public Alert() {
for (int i = 0; i < map.size; i++) {
str += map.get(i); //map is visible and never changes for any
//instance
}
}
}
听起来这个映射应该是类的静态成员。您可以在静态初始值设定项块中初始化它。听起来这个映射应该是类的静态成员。您可以在静态初始值设定项块中对其进行初始化。如果类的所有实例都将使用相同的数据,则应使用静态字段。你也可以使地图不可修改,只是为了确保你或其他人不会把它弄糟
private static Map<String, String> map = new HashMap<>();
static {
// Insert your keys and values
map.put(key, value);
// Make the map unmodifiable, just in case
map = Collections.unmodifiableMap(map);
}
PS:如果你有一个连续0,1,2,3,4键的地图。。。然后考虑列表,因为列表索引与本例中的键的目标相同。 如果类的所有实例都使用相同的数据,则应该使用静态字段。你也可以使地图不可修改,只是为了确保你或其他人不会把它弄糟
private static Map<String, String> map = new HashMap<>();
static {
// Insert your keys and values
map.put(key, value);
// Make the map unmodifiable, just in case
map = Collections.unmodifiableMap(map);
}
PS:如果你有一个连续0,1,2,3,4键的地图。。。然后考虑列表,因为列表索引与本例中的键执行相同的目标。MAP。GET(I:)不是一个映射的有效语法。你在说什么映射?我想你想要的是一个列表或数组,而不是映射。不,它是“I”,而不是“[I]”但是,如果你使用增量整数索引遍历映射键,你可能需要一个列表。Map.get[I]对于映射来说不是有效的语法。你在说什么映射?我想你想要的是一个列表或数组,而不是映射。不,它是“I”,而不是“[I]”。不过,如果你使用增量整数索引遍历映射键,你可能需要一个列表。final也是一个很好的补充。。为了安全起见:P+1 BTW最终也是一个很好的补充。。为了安全起见:P+1 BTW首先-谢谢!关于PS-我还没有决定什么是关键,代码只是为了理解其含义。@user4675862好吧,请记住:我已经用静态初始值设定项更新了我的答案。首先-谢谢!关于PS-我还没有决定什么是关键,代码只是为了理解其含义。@user4675862好吧,请记住:我已经用静态初始值设定项更新了我的答案。