嵌套循环的最佳实践

我正在读取大型 Json 文件,我想将这些对象映射到文件中并将它们插入到数据库中


json结构


{


"A": [

    {

        "key1": "value1",

        "key2": "value2",

        "B": [

            {

                "id": "34f852c8-fc51-47aa-ba7f-dd659a4bff3f",

                "C": [

                    {

                        "c1": "819685-002",


                    }

                ]

            }

        ]

    },


    {

        "key1": "value1",

        "key2": "value2",

        "B": [

            {

                "id": "34f852c8-fc51-47aa-ba7f-dd659a4bff3f",

                "C": [

                    {

                        "c1": "819685-002",


                    }

                ]

            }

        ]

    }

]

}

该文件包括A的多个块


所以我需要循环三个嵌套循环


For (A){

    for (B){

       FOR (C) {

          // CREATE THE AN OBJECT 

       }

     }

 }


 // Then after the loop insert all objects once

 db.bulk(//List of object created);

插入2557条记录需要3分钟的问题?


可以做任何增强来增强循环程序吗?


梵蒂冈之花
浏览 156回答 2
2回答

人到中年有点甜

我总是会创建模型来将 json 字符串映射到 POJO,这样我就可以灵活地处理它们。例如,对于您的 json 部分,我会将 POJO 创建为:class Payload {&nbsp; &nbsp; private List<Result> A;&nbsp; &nbsp; // getters and setters}class Result {&nbsp; &nbsp; private String key1;&nbsp; &nbsp; private String key2;&nbsp; &nbsp; private List<Result2> B;&nbsp; &nbsp; // getters and setters}现在您可以将您的 json 映射到 pojo 与 Jackson 为:import com.fasterxml.jackson.databind.ObjectMapper;// . . .&nbsp;ObjectMapper mapper = new ObjectMapper();Payload payload = mapper.readValue(jsonString, Payload.class);现在您可以将有效负载或部分有效负载发送到 db。

Cats萌萌

这似乎是一个优化问题。非常类似于这里的这个。基本上,没有真正更有效的方法来优化 3 个嵌套的 for 循环,但是,分析算法结构并重新评估如何分配对象并通过 JSON 本身进行解析将是更好的攻击策略。话虽如此,正如其他人所评论的那样,有像 Jackson 这样的工具可以为您做到这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java