多维字典?

时间:2017-09-09 13:20:15

标签: java

我正在尝试找到一种简单/有效的方法来为我的应用程序在每个索引下存储多个值,例如:

return (int)Math.pow(10,x-1)

因此我可以将其设置为静态变量,然后可以通过单个索引值(每个对象中唯一的变量)从各种对象实例访问它。基本上,有点像“多维字典”。

我看过2D数组,但它们似乎仅限于单一数据类型(Int,string等),并且还查看了哈希映射 - 这似乎也有限,好像使用了两个以上的值,需要一个列表变量再次回到单一数据类型问题。有关这个简单解决方案的任何建议吗?

2 个答案:

答案 0 :(得分:2)

为这些条目定义一个类,并使用一个对象数组。所以这个类可能是这样的:

class Thingy {
    private int someNumber;
    private String someString;
    private boolean someBool;
    private String someOtherString;

    public Thingy(int _someNumber, String _someString, boolean _someBool, String _someOtherString) {
        this.someNumber = _someNumber;
        this.someString = _someString;
        this.someBool = _someBool;
        this.someOtherString = _someOtherString;
    }

    public int getSomeNumber() {
        return this.someNumber;
    }
    // ...setter if appropriate...

    // ...add accessors for the others...
}

...然后你做:

Thingy[] thingies = new Thingy[] {
    new Thingy(54, "Some string", false, "Some other string"),
    new Thingy(12, "Some string", true, "Some other string"),
    new Thingy(18, "Some string", true, "Some other string")
};

答案 1 :(得分:0)

Python的主干很大程度上依赖于字典数据结构,可以使用__dict__属性反映,分配和访问许多实例。如果你有一个经常需要访问十几个字典的模型,那么在Python中复制类似下面的内容会减少很多不必要的Java特性:

class ExampleObject:
    spam = "example"
    title = "email title"
    content = "some content"

obj = ExampleObject()

print obj.spam # prints "example"

print obj.__dict__["spam"] # also prints "example"

为你准备一个替代选项。