【问题标题】:How do I clear an ArrayList?如何清除 ArrayList?
【发布时间】:2013-04-06 03:51:43
【问题描述】:

我在ThisClass中有以下代码:

static ArrayList<MyClass> classlist; 

如果我打电话:

ThisClass.classlist = new ArrayList<MyClass>();
ThisClass.classlist.add(object);

然后再次调用此行:

ThisClass.classlist = new ArrayList<MyClass>();

它会重置ThisClass.classlist 列表,即类列表列表将不再包含对象吗?

【问题讨论】:

  • 是的,当然!你还能期待什么?
  • 你说的是ArrayLists而不是arrays。如果没有其他对 old Arraylist 的引用,它将被垃圾回收。
  • 是的,你的权利,它是一个数组列表而不是数组,
  • 你也可以调用.clear()。我建议将数组列表设置为新数组,因为即使两种方法具有相同的结果,您的目标也更清楚。 docs.oracle.com/javase/6/docs/api/java/util/…

标签: java android arraylist


【解决方案1】:

正确。

从技术上讲,你没有清除 ArrayList 这样做,你实际上实例化了一个新的空 ArrayList

【讨论】:

    【解决方案2】:

    打电话

    ThisClass.classlist = new ArrayList<MyClass>();
    

    清除 ThisClass.classlist 数组(实际上,将创建一个新的 ArrayList 并将其放置在旧的位置)。

    话虽如此,使用起来要好得多:

    ThisClass.classlist.clear();
    

    这是一种更清晰的方法:在代码中显示您的真实意图,表明您真正想要完成的工作,从而使您的代码更具可读性/可维护性。

    【讨论】:

      【解决方案3】:

      这是一个插图:

      代码 1:创建 ArrayList 并添加对象

      ThisClass.classlist = new ArrayList<MyClass>();
      ThisClass.classlist.add(object);
      

      结果成这样:

      代码 2:通过重新初始化进行重置

      ThisClass.classlist = new ArrayList<MyClass>();
      

      结果——你通过使它指向一个新对象来重置它:

      代码 3:通过清除对象进行重置

      你应该做的是让它“不再包含一个对象”:

      ThisClass.classlist.clear();
      

      Clear 循环遍历所有元素并使它们null。在内部,ArrayList 也指向其对象的内存地址,但为简单起见,请认为当您调用此方法时它们正在被“删除”。

      代码 4:重置整个类列表

      如果你想让它“不再包含 ArrayList”,你可以这样做:

      ThisClass.classlist = null;
      

      这意味着:

      另外,请注意您的问题标题提到了“静态 ArrayList”。 static 在这种情况下无关紧要。无论对象是否为静态,您的问题的结果都是相同的。

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 2016-10-31
        • 2014-10-17
        • 2019-12-18
        • 2016-11-04
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多