栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java 8中递归展平嵌套映射的值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java 8中递归展平嵌套映射的值

您可以定义一个递归方法来展平一个地图并将其用作函数

Stream#flatMap
或直接调用它来使用。

例:

public class FlatMap {    public static Stream<Object> flatten(Object o) {        if (o instanceof Map<?, ?>) { return ((Map<?, ?>) o).values().stream().flatMap(FlatMap::flatten);        }        return Stream.of(o);    }    public static void main(String[] args) {        Map<String, Object> map0 = new TreeMap<>();        map0.put("key1", "value1");        map0.put("key2", "value2");        Map<String, Object> map1 = new TreeMap<>();        map0.put("key3", map1);        map1.put("key3.1", "value3.1");        map1.put("key3.2", "value3.2");        Map<String, Object> map2 = new TreeMap<>();        map1.put("key3.3", map2);        map2.put("key3.3.1", "value3.3.1");        map2.put("key3.3.2", "value3.3.2");        List<Object> collect = map0.values().stream().flatMap(FlatMap::flatten).collect(Collectors.toList());        // or        List<Object> collect2 = flatten(map0).collect(Collectors.toList());        System.out.println(collect);     }}

对于给定的嵌套地图,它会打印

[value1,value2,value3.1,value3.2,value3.3.1,value3.3.2]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号