0

所以我希望能够拥有一个公共哈希表(有点像你将如何拥有一个公共 String 或 int 等字段)。我该怎么做呢?我试过这样的事情:

public class Home {
    public static Hashtable<String, Double> test = new Hashtable<String, Double>();

    public static void main(String[] args) {
        test.put("A", 1.2);
        test.put("B", 1.3);
        test.put("C", 1.4);

        System.out.println(test.get("A");
    }
}       

不过,我希望能够在另一个类中访问 Hashtable 及其信息。这样做的方法是什么?我有足够的吗?谢谢。

4

4 回答 4

2
public static void main(String[] args) {
        Home.test.put("A", 1.2);
        Home.test.put("B", 1.3);
        Home.test.put("C", 1.4);

        System.out.println(Home.test.get("A");
    }
于 2013-08-08T18:10:28.233 回答
0

您应该能够访问MapasHome.test

但是,您不会添加任何初始值。你需要一个单独的方法来做到这一点。

于 2013-08-08T18:12:25.990 回答
0

Home.test可以使用as in访问地图,Home.test.put("A", 1.2)但您应该使用encapsulation。请注意,静态关键字意味着该类的所有实例共享同一个映射,如果您希望每个实例唯一,则必须删除该static关键字。

将 Map(最好使用接口)声明为私有并提供 getter/setter。

public class ClassWithTheTable{

    private static Map<String, Double> table = new Hashtable<String,Double)>();

    public Map<String, Double> getTable(){
      return table;
    }

    public void setTable(Map<String,Double> table){
      this.table = table;
    }
    //Rest of code ommited.
}
于 2013-08-08T18:14:26.910 回答
0

如果有多个线程访问该变量,可能要使用:

public static final Map<String, Double> test = new ConcurrentHashMap<>();

您可以从另一个班级访问

double value = Home.test.get("A");
于 2013-08-08T18:15:06.857 回答