在一组地图中返回一组所有键

时间:2017-01-25 14:51:10

标签: java collections

是否有内置的Java方法将多个映射作为参数并在这些映射中返回一组所有键?

这样的东西
public static Set<String> getKeys(Map<String, ?> ... arg2){

    Set<String> result = new HashSet<>();        
    for (Map<String, ?> map : arg2) {
        for (Map.Entry<String, ?> entry : map.entrySet()) {
            String key = entry.getKey();
            result.add(key);
        }            
    }
    return result;
}

2 个答案:

答案 0 :(得分:6)

不是我知道,不是。但是,让我们对Java 8流有一些乐趣,不管吗?

private Set<String> keys(Map<String, ?>... maps) {
    return Arrays.stream(maps).flatMap((map) -> map.keySet().stream()).collect(Collectors.toSet());
}

答案 1 :(得分:3)

您可以使用Java 8和流。

public static Set<String> getKeys(Map<String, ?> ... arg2){
    return Arrays.stream(arg2)
            .map(Map::keySet)
            .flatMap(Collection::stream)
            .collect(Collectors.toSet());
}