Map和List的碰撞

简介: Map和List的碰撞

大家都知道map和list是我们常用的数据结构

比如hashmap和arraylist

在实际开发中,有时会遇到一个问题,比如加了个需求,原来的数据库字段不够用,需要加字段,这样会导致很多处做修改,而我们如果灵活使用map和list就可以一个用字段以json的格式存放很多数据,但这种形式也有弊端,比如难以维护、难以拓展,所以一般情况下,能加字段,加表的话就先别用这种形式

但如果遇到不能动数据库的情况,就可以以这种方式(你甚至可以以这种方式把整个项目存放到一条数据里)😂废话不多说:

package com.ruben;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * @ClassName: JsonTestController
 * @Description:
 * @Date: 2020/6/12 14:51
 * *
 * @author: achao<achao1441470436 @ gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@RestController
@RequestMapping("json")
public class JsonTestController {
    @PostMapping
    public String jsonTest(@RequestBody Map<String, List<Map<String, Object>>> mapListMap) {
        List<Map<String, Object>> list = mapListMap.get("1234567");
        list.forEach(map -> {
            String beforeUpdate = (String) map.get("zipName");
            System.out.println(beforeUpdate);
            map.put("zipName", "修改后的名字");
            System.out.println((String) map.get("zipName"));
        });
        return "成功!";
    }
}

请求的数据格式

{
    "123456": [
        {
            "videoId": "ads",
            "zipUrl": "adsdas",
            "zipName": "asdaw"
        }
    ],
    "1234567": [
        {
            "videoId": "ads",
            "zipUrl": "adsdas",
            "zipName": "修改前的名字"
        },
        {
            "videoId": "ads",
            "zipUrl": "adsdas",
            "zipName": "修改前的名字2"
        }
    ]
}

输出结果

修改前的名字
修改后的名字
修改前的名字2
修改后的名字

如果要对单个执行具体修改,就可以在forEach里把它们放入另一个list>里

感觉有点像套娃👶

相关文章
|
15天前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
52 18
你对Collection中Set、List、Map理解?
|
8天前
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
45 20
|
6月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
|
3月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
42 5
|
4月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
4月前
|
存储 Java 索引
|
6月前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
6月前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
34 2
|
6月前
|
Java
Java list中的对象转为list,list中的对象转为map
Java list中的对象转为list,list中的对象转为map
138 1
|
6月前
|
存储 安全 程序员
老程序员分享:List、Map、Set之间的联系与区别:
老程序员分享:List、Map、Set之间的联系与区别: