Java中有没有Python字典显示的等价物?

kqqjbcuj  于 2023-01-19  发布在  Java
关注(0)|答案(6)|浏览(138)

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

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

在Java中是否有对等的语言?
[将“匿名词典”编辑为“词典显示”]

8ehkhllq

8ehkhllq1#

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

这和你的不同,因为你的有不同的数据类型,而我的只处理字符串,你实际上也可以有混合的集合,但我讨厌这样做,有点违背了强类型的目的。

tjvv9vkg

tjvv9vkg2#

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"));
    }
}
mlmc2os5

mlmc2os53#

Java没有匿名字典,因为1)它是静态类型语言,2)它在语法层面上不支持这个特性。您需要在创建时指定字典的类型。相比之下,基于JVM的语言Groovy有这个特性。您可以在Groovy中按照以下方式编写上述代码:

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

esyap4oy4#

最接近这种形式的捷径是下面的黑客:

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

然而,这将创建一个匿名类,这并不总是好的。
不幸的是,java不是一种快捷方式的语言。

zed5wv10

zed5wv105#

如果将问题从“Java”扩展到“运行在JavaVM上的语言”,这段Scala代码相当简洁:

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

Python语法的一个改进之处在于,它对外部人员来说更可读。

dvtswwa3

dvtswwa36#

[abacus-common][1],一个通用的Java编程库,它提供了许多日常使用的方法,使Java编程更有趣,更有效率:

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

(声明:我是abacus-common的开发者)[1]:https://github.com/landawn/abacus-common

相关问题