番石榴有静态方法
Maps.uniqueIndex(Iterable<V> values, Function<? super V,K> keyFunction)
它通过应用到各个元素上的输入函数的结果映射输入集合中的每个条目。
C#是否有类似的功能?
Java样本
Map<String, Human> idToHuman = Maps.uniqueIndex(humans, Human::getPassportId)
; 最佳答案
在C#
的情况下,我们有IEnumerable<V>
而不是Iterable<V>
,并且Dictionary
嵌入了Map
。这就是为什么我们可以放入C#
using System.Linq;
...
Dictionary<K, V> result = values.ToDictionary(v => keyFunction(v));
其中
values
要素IEnumerable<V>
和keyFunction
是Func<V, K>
。在您的情况下,C#代码可以是这样的using System.Linq;
...
// I've turned Java getPassportId method into PassportId property
// "Dictionary<String, Human>" declaration can be changed into just "var"
Dictionary<String, Human> idToHuman = humans.ToDictionary(human => human.PassportId);
关于java - 相当于Javas Guavas Maps.uniqueIndex的C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54901441/