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

展平嵌套的地图,其中包含未知级别的嵌套数组和地图

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

展平嵌套的地图,其中包含未知级别的嵌套数组和地图

您可以使用递归来展平

Map
。每次遇到a时
Map
,通过展平来递归
Map
;
当您遇到时
List
,请对其进行迭代,然后将索引添加到当前键中。否则,可以简单地设置一个值。在行动中看到下面的代码在这里。

public static Map<String, Object> flatten(final Map<String, Object> map) {    return flatten("", map, new HashMap<>());    //use new TreeMap<>() to order map based on key}@SuppressWarnings("unchecked")//recursive helper methodprivate static Map<String, Object> flatten(final String key, final Map<String, Object> map,        final Map<String, Object> result) {    final Set<Map.Entry<String, Object>> entries = map.entrySet();    if (!entries.isEmpty()) {        for (final Map.Entry<String, Object> entry : entries) { //iterate over entries final String currKey = key + (key.isEmpty() ? "" : '.') + entry.getKey();//append current key to previous key, adding a dot if the previous key was not an empty String final Object value = entry.getValue(); if (value instanceof Map) {//current value is a Map     flatten(currKey, (Map<String, Object>) value, result);//flatten Map } else if (value instanceof List) {//current value is a List     final List<Object> list = (List<Object>) value;     for (int i = 0, size = list.size(); i < size; i++) {         result.put(currKey + '.' + (i + 1), list.get(i));     }     //iterate over the List and append the index to the current key when setting value } else {     result.put(currKey, value);//set normal value }        }    }    return result;}public static void main(final String[] args){    final Map<String, Object> flattened = flatten(dates);    System.out.println(flattened);}


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

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

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