Ali*_*aka 1 java collections hashmap java-8 java-stream
我试图压扁地图但不丢失钥匙.
我想拥有的东西:
Map<K, Collection<V>> keyToValuesMap = ...;
Stream.flattenCollection(keyToValuesMap).forEach((k,v) -> print(k, v));
Run Code Online (Sandbox Code Playgroud)
其中,v表示集合中对应于每个值的每个值k.
一个等效的旧学校Java代码将是:
for (Map.Entry<K, Collection<V>> entry : keyToValuesMap.entrySet())
{
K k = entry.getKey();
for (V v : entry.getValue())
{
print(k, v);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这个问题不仅仅是对值进行流式处理,因为它key会丢失,如下所示:keyToValuesMap.entrySet().stream().flatMap(keyValuesEntry -> keyValuesEntry.getValue().stream()).forEach(v -> printJustV(v));
*这print只是该对的一个示例动作.
*我在StreamEx中搜索过这样的API ,但找不到.我确信我会在那里找到它......
没有流,这将更容易/紧凑:
map.forEach((k, v) -> v.forEach(e -> print(k, e)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |