有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    getMyList()在其外观上看起来不错,但正如其他人所提到的,myList是全局的。我的名单。clear()确实是清除列表的正确方法。尝试在getMyList()中创建一个新列表,看看问题是否仍然存在;在当前的体系结构中,您必须绝对确保这个类中处理myList的所有内容都在同一个线程上被调用

    有了现在的代码,很难找出问题发生的地方——也许是getMyList()的逻辑?也许还有另一种方法加入并修改myList?不可能知道。如果getMyList()返回一个全新的列表,您可以稍后将其分配给myList(例如,在doAnotherThing()中),那么您至少可以在不同的点打印不同的列表,以查看错误所在