我有一段非常简单的代码,它遍历Database对象列表并将某些属性附加到StringBuilder。现在结果有时超过100K,因此追加操作超过100K
我的问题是我无法在需要数据的情况下缩短迭代次数。但Stringbuilder继续接管堆空间。并抛出OutOfMemoryException。
是否有人遇到任何此类情况,并且是否存在此问题的解决方案或StringBuilder的替代方案。
很有可能我正在做的事情可能也是错的,所以即使代码非常简单,我也会发布它。
StringBuilder endResult = new StringBuilder();
if (dbObjects != null && !dbObjects.isEmpty()) {
for (DBObject dBO : dbObjects) {
endResult.append("Starting to write" + dBO.getOutPut() + "content");
endResult.append(dBO.getResults);
}
output.append("END");
}
就像我说的那样,我很可能会从DB获得100000个结果
答案 0 :(得分:1)
使用StringBuilder
时,您不应该这样做:
endResult.append("Starting to write" + dBO.getOutPut() + "content");
上面的语句将进行字符串连接。使用append()
方法,例如:
endResult.append("Starting to write").append(dBO.getOutPut()).append("content");