任何人都可以点示我如何在Groovy中使用Map
的示例,其中String
作为其键和List
作为值?作为字符串的值和作为Groovy中的值的映射的映射
20
A
回答
27
Groovy中接受几乎所有的Java语法,所以有一个选择范围,如下图所示:
// Java syntax
Map<String,List> map1 = new HashMap<String,List>();
List list1 = new ArrayList();
list1.add("hello");
map1.put("abc", list1);
assert map1.get("abc") == list1;
// slightly less Java-esque
def map2 = new HashMap<String,List>()
def list2 = new ArrayList()
list2.add("hello")
map2.put("abc", list1)
assert map2.get("abc") == list2
// typical Groovy
def map3 = [:]
def list3 = []
list3 << "hello"
map3.'abc'= list1
assert map3.'abc' == list3
13
def map = [:]
map["stringKey"] = [1, 2, 3, 4]
map["anotherKey"] = [55, 66, 77]
assert map["anotherKey"] == [55, 66, 77]
5
一个额外的小片与地图打交道时是有帮助的/列表中值地图是groovy中地图上的withDefault(Closure)
方法。而不是做下面的代码:
Map m = [:]
for(object in listOfObjects)
{
if(m.containsKey(object.myKey))
{
m.get(object.myKey).add(object.myValue)
}
else
{
m.put(object.myKey, [object.myValue]
}
}
你可以做到以下几点:
Map m = [:].withDefault{key -> return []}
for(object in listOfObjects)
{
List valueList = m.get(object.myKey)
m.put(object.myKey, valueList)
}
在默认可用于其他的东西为好,但我觉得这是最常见的情况我。
API: http://www.groovy-lang.org/gdk.html
地图 - > withDefault(关闭)
1
你不需要申报地图常规内部识别它
def personDetails = [firstName:'John', lastName:'Doe', fullName:'John Doe']
// print the values..
println "First Name: ${personDetails.firstName}"
println "Last Name: ${personDetails.lastName}"
相关问题
- 1. 在java中使用映射作为值的映射是“好”吗?
- 2. Python - 将键映射到作为映射的值
- 3. 是否可以使用运算符作为映射中的映射值?
- 4. 如何映射映射的键和值?
- 5. 字符串的映射,设置。值
- 6. 映射查询字符串值作为路线
- 7. 比较字符串和映射值
- 8. Grails的映射字符串为nvarchar
- 9. 映射空字符串为NULL NHibernate的
- 10. 如何将映射值转换为Java中的字符串
- 11. 与字符串键和字符串或切片值的映射?
- 12. 在代码中映射Enum作为字符串NHibernate 3.2映射代码
- 13. 使用Z3 :: expr作为映射值
- 14. C++ 11 share_ptr作为值映射关键
- 15. 插入对作为映射值
- 16. ObjectMapper:字典键作为映射对象中的值
- 17. 使用每个映射中的键的值将映射序列转换为映射映射
- 18. 将键值映射到整数和字符串的值
- 19. 如何将类类型用作映射键和类的值列表作为映射值?
- 20. BizTalk映射值映射环接的functoid
- 21. R用矢量映射的值映射
- 22. 将键映射为字符串的序列化和反序列化映射
- 23. Groovy收集(?)变量和值来映射
- 24. 映射字符串
- 25. Scala的映射值
- 26. 映射列的值
- 27. 按csv排序映射字符串值
- 28. 映射Java泛型字符串值
- 29. 添加字符串值映射在C++
- 30. 如何将sql中的值映射到字符串值
另外: ' map.stringKey = [1,2,3,4]; map.anotherKey = [55,66,77]' – Will