Java 字典作为类的不同实例的引用

Java 字典作为类的不同实例的引用,java,dictionary,Java,Dictionary,我正试图找到以下问题的解决方案: 我有一个类Alert,它被创建了很多次,它的实例显示为:List类型的字段。 其中一个警报字段假设使用一个映射,该映射是一个预定义的字典,该项从不更改。 如何配置映射,使其不必在每次创建警报时创建 意思是: public class Alerts { private List<Alert> list; . . . public Alerts() { list = new ArrayList<

我正试图找到以下问题的解决方案: 我有一个类Alert,它被创建了很多次,它的实例显示为:List类型的字段。 其中一个警报字段假设使用一个映射,该映射是一个预定义的字典,该项从不更改。 如何配置映射,使其不必在每次创建警报时创建

意思是:

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好吧,请记住:我已经用静态初始值设定项更新了我的答案。