如何使用公共密钥从地图的内部地图获取所有值?

时间:2015-03-31 15:56:30

标签: java java-8 java-stream

我有一张地图地图:HashMap<String, Map<DistinctCode, String>>

我只需要使用String从内部地图中提取DistinctCode值。我怎么能在一行或一个声明中做到这一点?

换句话说,我需要一个像这样的方法:

mapOfMap.find(distinctcode)

是否可以在一行或一个声明中使用?

4 个答案:

答案 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