记一段 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}`
        }
    });
}));
相关文章
|
3月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
56 1
|
3月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
91 2
|
3月前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
96 2
|
2月前
|
存储 Java Serverless
HashMap的底层数据结构是怎样的
在Java中,HashMap是一种基于哈希表的Map接口实现,以其高效的数据存取能力而广泛使用。本文将深入探讨HashMap的底层数据结构,揭示其如何通过数组、链表和红黑树的结合来优化性能。
|
2月前
|
存储 Java Serverless
深入探索:HashMap的底层数据结构揭秘
HashMap作为Java中一个非常重要的集合类,其底层数据结构的设计对于性能有着至关重要的影响。本文将详细解析HashMap的底层数据结构,帮助开发者更好地理解和使用这一强大的工具。
33 7
|
2月前
|
存储 Java Serverless
HashMap的底层数据结构
HashMap作为Java中一个核心的数据结构,以其高效的键值对存储和检索能力而被广泛使用。本文将深入探讨HashMap的底层数据结构,揭示其如何通过精巧的设计实现快速的数据访问。
38 6
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
72 1
|
2月前
|
存储 Java
HashMap的底层数据结构详解
在Java中,HashMap 是一个非常重要的集合类,用于存储键值对(Key-Value)。它提供了快速的数据插入、删除和查找功能。本文将深入探讨 HashMap 的底层数据结构,帮助读者更好地理解其工作原理。
|
3月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
38 1
|
3月前
|
存储 安全 数据库
除了 HashMap,还有哪些数据结构可以实现键值对存储?
【10月更文挑战第11天】 除了`HashMap`,其他常见支持键值对存储的数据结构包括:`TreeMap`(基于红黑树,键有序)、`LinkedHashMap`(保留插入顺序)、`HashTable`(线程安全)、`B-Tree`和`B+Tree`(高效存储大量数据)、`SkipList`(通过跳跃指针提高查找效率)及`UnorderedMap`(类似`HashMap`)。选择合适的数据结构需根据排序、并发、存储和查找性能等需求。