我有一个for循环并且它有一个List,我希望每次for循环开始时它都为空。
我全球都有这个,
List<String> topDescription = new ArrayList<String>();
这是for循环,
for (int j = 0; j < subMenuArray.length(); j++) {
JSONObject subMenuObject = subMenuArray
.getJSONObject(j);
if ((subMenuObject.getString("Description"))
.equals(sizeSelectedItem)) {
//empty the topDescription here
JSONArray extraItemEntityArray = subMenuObject
.getJSONArray("ExtraItemEntity");
for (int k = 0; k < extraItemEntityArray.length(); k++) {
JSONObject objectE = extraItemEntityArray
.getJSONObject(k);
if ((objectE.getString("Description")) != null
&& (objectE.getString("Type"))
.equals("E")) {
topDescription.add(objectE
.getString("Description"));
}
}
break;
}
}
答案 0 :(得分:3)
以下是代码,但我不确定您要查找的是什么,每次迭代都会使列表为空。
你可以用两种方式做到这一点,一种是清算,另一种是分配新的arraylist,
topDescription.clear();
或
topDescription = new ArrayList<Integer>();
答案 1 :(得分:0)
为什么不制作新的引用并将旧对象留给垃圾收集器?:
topDescription = new ArrayList<String>();
答案 2 :(得分:0)
清除现有列表不是创建新引用。它重用了java堆中已存在的引用,但清除了列表中的内容,这使得列表可以重复使用,并增加了JVM的额外开销。