gpt4 book ai didi

java - 如何在 for 循环中避免在 Java 中创建不必要的对象

转载 作者:行者123 更新时间:2023-11-30 08:08:53 26 4
gpt4 key购买 nike

我正在使用 java 创建以下 json 文件

JSONObject json = new JSONObject();
JSONArray vertex = new JSONArray();
for (int i = 0; i < num; i++) {
JSONObject usr1 = new JSONObject();
JSONObject usr2 = new JSONObject();

// String na="name"+i
usr1.put("type", "string");
usr1.put("value", "name" + i);
usr2.put("name", usr1);

usr2.put("_id", Integer.toString(i));
usr2.put("_type", "vertex");
// v2.put(usr2);
vertex.put(usr2);

// email
JSONObject usr3 = new JSONObject();
JSONObject usr4 = new JSONObject();
usr3.put("type", "string");
usr3.put("value", "email" + i + "@gmail.com");
usr4.put("email", usr3);

usr4.put("_id", Integer.toString(i + num));
usr4.put("_type", "vertex");
vertex.put(usr4);
}
json.put("vertex", vertex);

num 可以约为 60,000-200,000。

但是在这里我一次又一次地创建 java 对象,这是相当昂贵的。我希望将对象创建最小化,并且不想过多地更改代码结构。如何在不过多更改代码结构的情况下实现这一目标?

我正在使用 org.codehaus.jettison.json 包中的 JSON* 类。我必须将它写入 json 对象文件

最佳答案

为了在不创建中间对象的情况下快速生成 JSON JSONWriter可以使用:

StringWriter sw = new StringWriter();
JSONWriter writer = new JSONWriter(sw);
writer.object().key("vertex").array();
for (int i = 0; i < num; i++) {
writer
.object() // usr2
.key("name")
.object() // usr1
.key("type").value("string")
.key("value").value("name"+i)
.endObject()
.key("_id").value(Integer.toString(i))
.key("_type").value("vertex")
.endObject()
.object() // usr4
.key("email")
.object() // usr3
.key("type").value("string")
.key("value").value("email"+i+"@gmail.com")
.endObject()
.key("_id").value(Integer.toString(i+num))
.key("_type").value("vertex")
.endObject();
}
writer.endArray().endObject();
String json = sw.toString();

此处 StringWriter 用于存储中间 JSON 文本。或者,您可以直接写入文件或网络套接字,而根本不将其保存在内存中。

关于java - 如何在 for 循环中避免在 Java 中创建不必要的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32863795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com