java这个删除调用有什么问题
附件是一个示例代码,我正在尝试清除列表中的旧内容,然后再填充新数据,但它似乎不起作用。 比方说,如果在第一次通话中,我得到的列表大小为4,在第二次通话中,列表大小为6,那么它会使列表的大小增加到10。我想要的只是最近一次通话的数据
public class DemoClass
{
List<String> myList = new ArrayList<>();
public void doSomething()
{
myList = getMyList("params");
System.out.println(myList.toString());
//Results in ArrayList of size 3 = AAA, BBB, CCC
}
public void doAnotherThing()
{
myList = getMyList("different params"); // Actual size returned is 4
System.out.println(myList.toString());
//Results in ArrayList of size 7 = AAA, AAA, BBB, BBB, CCC, DDD, EEE
}
public List<String> getMyList(String params)
{
//Some business Logic based on params
myList.clear();
myList = //code to populate the list
return myList;
}
}
# 1 楼答案
getMyList()在其外观上看起来不错,但正如其他人所提到的,myList是全局的。我的名单。clear()确实是清除列表的正确方法。尝试在getMyList()中创建一个新列表,看看问题是否仍然存在;在当前的体系结构中,您必须绝对确保这个类中处理myList的所有内容都在同一个线程上被调用
有了现在的代码,很难找出问题发生的地方——也许是getMyList()的逻辑?也许还有另一种方法加入并修改myList?不可能知道。如果getMyList()返回一个全新的列表,您可以稍后将其分配给myList(例如,在doAnotherThing()中),那么您至少可以在不同的点打印不同的列表,以查看错误所在