我有一张地图地图:HashMap<String, Map<DistinctCode, String>>
。
我只需要使用String
从内部地图中提取DistinctCode
值。我怎么能在一行或一个声明中做到这一点?
换句话说,我需要一个像这样的方法:
mapOfMap.find(distinctcode)
是否可以在一行或一个声明中使用?
答案 0 :(得分:3)
在Java 8中
List<String> list = map.values().stream().map(m -> m.get(distinctcode)).filter(Objects::nonNull).collect(Collectors.toList());
答案 1 :(得分:2)
使用Java 8,你可以做到
Set<String> strings = mapOfMaps.values().stream()
.map(m -> m.get(distinctCode))
.filter(v -> v != null)
.collect(Collectors.toSet());
答案 2 :(得分:0)
DistinctCode dv = ...;
Stream<String> res =
mom.values().stream().map(p->p.get(dv)).filter(p->p!=null);
答案 3 :(得分:0)
稍微不同的Java 8方法没有空过滤:
final Set<String> values = mapOfMaps.values().stream()
.filter(m -> m.containsKey(distinctCode))
.map(m -> m.get(distinctCode))
.collect(Collectors.toSet()); //this can be simplified using a static import