在Python中,我正在使用字典显示:
myAnonDict = {'foo': 23, 'bar': 'helloworld'}
Java中是否有等价物?
[编辑'匿名字典'以阅读'字典显示']
答案 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的开发者)