Java 嵌套循环的最佳实践
我正在阅读大型Json文件,我想映射文件中的这些对象并将它们插入db中 Json结构Java 嵌套循环的最佳实践,java,cloudant,Java,Cloudant,我正在阅读大型Json文件,我想映射文件中的这些对象并将它们插入db中 Json结构 { "A": [ { "key1": "value1", "key2": "value2", "B": [ { "id": "34f852c8-fc51-47aa-ba7f-dd659a4bff3f", "C": [ {
{
"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",
}
]
}
]
}
]
}
该文件包含一个文件的多个块
所以我需要循环三个嵌套循环
For (A){
for (B){
FOR (C) {
// CREATE THE AN OBJECT
}
}
}
// Then after the loop insert all objects once
db.bulk(//List of object created);
该问题需要3分钟才能插入2557条记录
可以做任何增强来增强循环过程吗?我总是创建模型来将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
}
现在,您可以将有效负载或部分有效负载发送到db
如果您想使用Gson进行映射,那么您需要考虑这一点。这似乎是一个优化问题。基本上,没有更有效的方法来优化3个嵌套for循环,但是,分析算法结构并重新评估如何分配对象和通过JSON本身进行解析将是更好的攻击策略 也就是说,正如其他人所评论的,有一些工具,比如Jackson,可以帮你做到这一点 这里有一些链接可以帮助您开始使用:
创建对象列表或db.bulk的时间到哪里去了?比如,为什么不使用JSON映射呢?同意Victor的说法。你可以为你的汽车制造自己的车轮,但只买它们更有效。(也就是说,不要重新发明轮子。)@VictorGubin,关键是新的对象结构与Json对象中的不同,这就是为什么我必须循环到them@TonyHopkinson,循环和插入记录您介意将您的答案作为对问题的直接评论吗?也许可以添加标志作为副本?可以,谢谢。编辑:我无法直接对帖子发表评论,因为这是一个新帐户。@sdumont问题是新的对象结构与Json对象中的不同,这就是为什么我必须循环到它们中的原因。谢谢。我是新来的
import com.fasterxml.jackson.databind.ObjectMapper;
// . . .
ObjectMapper mapper = new ObjectMapper();
Payload payload = mapper.readValue(jsonString, Payload.class);