记一段 Kotlin 处理 HashMap 数据结构的代码

简介: Kotlin 代码: fun saveDataJson(scenarioId: Long) { val data = nodeModelFieldsDao.

Kotlin 代码:

    fun saveDataJson(scenarioId: Long) {
        val data = nodeModelFieldsDao.findByScenarioId(scenarioId)
        println("data=${JSON.toJSONString(data)}")
        println("开始执行 saveDataJson")
        val modelCodeSet = mutableSetOf<String>()
        data.forEach {
            it.modelCode?.let { v -> modelCodeSet.add(v) }
        }
        println("modelCodeSet=${JSON.toJSONString(modelCodeSet)}")
        val dataJsonObj = hashMapOf<String, HashMap<String?, String?>>()
        modelCodeSet.forEach {
            val mc = it
            dataJsonObj[mc] = hashMapOf() // 这一句话很重要,先初始化 dataJsonObj[mc]
            data.forEach {
                val modelCode = it.modelCode
                if (mc == modelCode) {
                    dataJsonObj[mc]?.set(it.fieldCode, it.value)
                }
            }
        }

        val dataJsonStr = JSON.toJSONString(dataJsonObj)
        println("dataJsonStr=${dataJsonStr}")

        val record = dataJsonDao.findByScenarioId(scenarioId)
        if (record == null) {
            val dataJson = DataJson()
            dataJson.dataJson = dataJsonStr
            dataJson.scenarioId = scenarioId
            dataJsonDao.save(dataJson)
        } else {
            record.dataJson = dataJsonStr
            record.scenarioId = scenarioId
            record.gmtModified = Date()
            dataJsonDao.save(record)
        }

        println("执行完成 saveDataJson")
    }

js 代码是:

var models = new Set();
for (var i = 0; i < data.length; i++) {
    var m = data[i];
    console.log(`m=${JSON.stringify(m)}`);
    let model_code = m.model_code;
    console.log(`model_code=${model_code}`);
    models.add(model_code);
}
console.dir(models);

var model_fields_map = {};
models.forEach(((model_code, index, array) => {
    model_fields_map[model_code] = {};
    data.map(m => {
        if (m.model_code == model_code) {
            model_fields_map[model_code][m.field_code] = `${m.field_output_code}|${m.data_type}|${m.setter_config_json}`
        }
    });
}));
相关文章
|
20天前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
33 0
|
20天前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
36 0
|
1月前
【数据结构】数组、双链表代码实现
【数据结构】数组、双链表代码实现
|
1月前
|
存储 缓存 Java
深入解析HashMap数据结构及其应用
深入解析HashMap数据结构及其应用
|
3月前
|
XML 编译器 Android开发
Kotlin DSL 实战:像 Compose 一样写代码
Kotlin DSL 实战:像 Compose 一样写代码
58 0
|
25天前
|
机器学习/深度学习 存储 Java
揭秘数组:数据结构的基石与代码实践解析
揭秘数组:数据结构的基石与代码实践解析
8 0
|
26天前
栈和队列的实现(详解+图解!文末附完整代码)
栈和队列的实现(详解+图解!文末附完整代码)
74 2
|
26天前
|
存储 编译器
数据结构之顺序表的实现(详解!附完整代码)
数据结构之顺序表的实现(详解!附完整代码)
35 1
|
26天前
|
存储 机器学习/深度学习 算法
C语言代码实现数据结构与算法
以上代码中,哈希表使用链表解决哈希冲突,每个链表节点包含一个键值对。hash函数用于计算键值对应的哈希值,insert函数用于向哈希表中插入一个键值对,若当前位置为空,则直接插入;否则,将新节点插入到链表末尾。search函数用于在哈希表中查找指定键值的值,若存在则返回其值,否则返回-1。
32 1
|
3月前
|
Java
数据结构 AVL树概念以及实现插入的功能(含Java代码实现)
数据结构 AVL树概念以及实现插入的功能(含Java代码实现)
54 0

热门文章

最新文章