是否有Java等效的Python字典显示?

时间:2010-06-22 15:31:59

标签: java python dictionary

在Python中,我正在使用字典显示:

myAnonDict = {'foo': 23, 'bar': 'helloworld'}

Java中是否有等价物?

[编辑'匿名字典'以阅读'字典显示']

6 个答案:

答案 0 :(得分:8)

Map<String, String> myMap = new HashMap<String, String>();
myMap.put("foo", "23");
myMap.put("bar", "helloworld");

这与您的不同,因为您的数据类型不同,而我的交易仅限于Strings。实际上你也可以在Java中使用混合集合,但我讨厌这样做。有点打败强打字的目的。

答案 1 :(得分:5)

Apache commons lang将允许您执行类似的操作(基于字符串的示例;可以自定义)

以下是代码:

import java.util.Map;
import org.apache.commons.lang.ArrayUtils;

public class ArrayToMapExample {

    public static void main(String[] args) {
        Map dict = ArrayUtils.toMap(new String[][]{{"United States", "New York"},
                            {"United Kingdom", "London"},
                              {"Netherland", "Amsterdam"},
                              {"Japan", "Tokyo"},
                              {"France", "Paris"}});


        System.out.println("Capital of France is " + dict.get("France"));
    }
}

答案 2 :(得分:2)

Java没有匿名dict,因为1)它是静态类型语言,2)它在语法级别上不支持此功能。您需要在创建期间指定字典的类型。相比之下,基于JVM的语言Groovy具有此功能。 您可以在Groovy中以下列方式编写上述代码:

def myAnonDict = [foo: 23, bar: 'helloworld']

答案 3 :(得分:1)

此表单的最近快捷方式是以下hack:

Map<String, Object> map = new HashMap<String, Object>() {{
    add("foo", 23);
    add("bar", "hello")
}};

但是,这将创建一个并不总是好的匿名类。

不幸的是,java不是一种快捷语言。

答案 4 :(得分:0)

如果问题从“Java”扩展到“在Java VM上运行的语言”,则此Scala代码非常简洁:

def myAnonDict = Map("foo" -> 23, "bar" -> "helloworld")

对Python语法的一个改进是它对外人来说更具可读性。

答案 5 :(得分:0)

AbacusUtil,Java中的通用编程库,提供了大量日常使用的方法,使Java编程更有趣,更高效:

    Map<String, Integer> map = asMap("abc", 23, "bar", 7);

(声明:我是AbacusUtil的开发者)