从 Xtend 中的对集合创建不可变映射
Create an immutable map from a collection of pairs in Xtend
我有一个对象集合 O
,我想从中创建一个包含两个特征(例如 O.name
和 O.value
)的(不可变)映射。
到目前为止我最好的解决方案是
newHashMap(o.map[it.name -> it.value])
但这将实例化并初始化一个新的 HashMap
,这实际上不是我想要的。相反,我想要一个没有不需要实例化的不可变映射,类似地
o.toInvertedMap[value]
returns - 但是这会将 O
映射到 O.value
。
Xtend库中有没有实现我想要的方法?
注意:为我上面的一般问题添加一些上下文,我实际上想要为我的 EMF EObject
s:[ 获取属性名称和值的映射=21=]
newHashMap(eObject.eClass.EAttributes.map[it.name -> eObject.eGet(it).toString])
编辑:
我刚找到这个:
newImmutableMap(o.map[it.name -> it.value])
这看起来更像我想要的。这是"best"的写法吗?
o.map[name->value].toImmutableMap?
到目前为止我找到的最好的方法是(如上面的更新):
newImmutableMap(o.map[name->value])
我有一个对象集合 O
,我想从中创建一个包含两个特征(例如 O.name
和 O.value
)的(不可变)映射。
到目前为止我最好的解决方案是
newHashMap(o.map[it.name -> it.value])
但这将实例化并初始化一个新的 HashMap
,这实际上不是我想要的。相反,我想要一个没有不需要实例化的不可变映射,类似地
o.toInvertedMap[value]
returns - 但是这会将 O
映射到 O.value
。
Xtend库中有没有实现我想要的方法?
注意:为我上面的一般问题添加一些上下文,我实际上想要为我的 EMF EObject
s:[ 获取属性名称和值的映射=21=]
newHashMap(eObject.eClass.EAttributes.map[it.name -> eObject.eGet(it).toString])
编辑:
我刚找到这个:
newImmutableMap(o.map[it.name -> it.value])
这看起来更像我想要的。这是"best"的写法吗?
o.map[name->value].toImmutableMap?
到目前为止我找到的最好的方法是(如上面的更新):
newImmutableMap(o.map[name->value])