为了账号安全,请及时绑定邮箱和手机立即绑定

嵌套循环的最佳实践

嵌套循环的最佳实践

梵蒂冈之花 2021-11-11 18:10:55
我正在读取大型 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分钟的问题?可以做任何增强来增强循环程序吗?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我总是会创建模型来将 json 字符串映射到 POJO,这样我就可以灵活地处理它们。例如,对于您的 json 部分,我会将 POJO 创建为:


class Payload {

    private List<Result> A;


    // getters and setters

}



class Result {

    private String key1;

    private String key2;

    private List<Result2> B;


    // getters and setters

}

现在您可以将您的 json 映射到 pojo 与 Jackson 为:


import com.fasterxml.jackson.databind.ObjectMapper;

// . . . 

ObjectMapper mapper = new ObjectMapper();

Payload payload = mapper.readValue(jsonString, Payload.class);

现在您可以将有效负载或部分有效负载发送到 db。


查看完整回答
反对 回复 2021-11-11
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

这似乎是一个优化问题。非常类似于这里的这个。基本上,没有真正更有效的方法来优化 3 个嵌套的 for 循环,但是,分析算法结构并重新评估如何分配对象并通过 JSON 本身进行解析将是更好的攻击策略。

话虽如此,正如其他人所评论的那样,有像 Jackson 这样的工具可以为您做到这一点。


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信