在Python中,我使用字典显示:
myAnonDict = {'foo': 23, 'bar': 'helloworld'}
在Java中是否有对等的语言?[将“匿名词典”编辑为“词典显示”]
8ehkhllq1#
Map<String, String> myMap = new HashMap<String, String>(); myMap.put("foo", "23"); myMap.put("bar", "helloworld");
这和你的不同,因为你的有不同的数据类型,而我的只处理字符串,你实际上也可以有混合的集合,但我讨厌这样做,有点违背了强类型的目的。
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")); } }
mlmc2os53#
Java没有匿名字典,因为1)它是静态类型语言,2)它在语法层面上不支持这个特性。您需要在创建时指定字典的类型。相比之下,基于JVM的语言Groovy有这个特性。您可以在Groovy中按照以下方式编写上述代码:
def myAnonDict = [foo: 23, bar: 'helloworld']
esyap4oy4#
最接近这种形式的捷径是下面的黑客:
Map<String, Object> map = new HashMap<String, Object>() {{ add("foo", 23); add("bar", "hello") }};
然而,这将创建一个匿名类,这并不总是好的。不幸的是,java不是一种快捷方式的语言。
zed5wv105#
如果将问题从“Java”扩展到“运行在JavaVM上的语言”,这段Scala代码相当简洁:
def myAnonDict = Map("foo" -> 23, "bar" -> "helloworld")
Python语法的一个改进之处在于,它对外部人员来说更可读。
dvtswwa36#
[abacus-common][1],一个通用的Java编程库,它提供了许多日常使用的方法,使Java编程更有趣,更有效率:
Map<String, Integer> map = asMap("abc", 23, "bar", 7);
(声明:我是abacus-common的开发者)[1]:https://github.com/landawn/abacus-common
6条答案
按热度按时间8ehkhllq1#
这和你的不同,因为你的有不同的数据类型,而我的只处理字符串,你实际上也可以有混合的集合,但我讨厌这样做,有点违背了强类型的目的。
tjvv9vkg2#
Apache commons lang将允许您做类似的事情(基于字符串的示例;可定制)
下面是代码:
mlmc2os53#
Java没有匿名字典,因为1)它是静态类型语言,2)它在语法层面上不支持这个特性。您需要在创建时指定字典的类型。相比之下,基于JVM的语言Groovy有这个特性。您可以在Groovy中按照以下方式编写上述代码:
esyap4oy4#
最接近这种形式的捷径是下面的黑客:
然而,这将创建一个匿名类,这并不总是好的。
不幸的是,java不是一种快捷方式的语言。
zed5wv105#
如果将问题从“Java”扩展到“运行在JavaVM上的语言”,这段Scala代码相当简洁:
Python语法的一个改进之处在于,它对外部人员来说更可读。
dvtswwa36#
[abacus-common][1],一个通用的Java编程库,它提供了许多日常使用的方法,使Java编程更有趣,更有效率:
(声明:我是abacus-common的开发者)[1]:https://github.com/landawn/abacus-common