【问题标题】:Emptying an ArrayList in Java [closed]在 Java 中清空 ArrayList [关闭]
【发布时间】:2013-07-24 12:15:38
【问题描述】:

我有一个 ArrayList:

ArrayList<OrderItem> orderItems = new ArrayList<OrderItem>();

里面装满了物体。 我想按下一个可以有效删除此列表中所有对象的按钮。我该怎么做?

【问题讨论】:

  • 学习研究 javadocs 是一项关键技能。没有它,你就无法写好 Java。
  • SO 不能替代JavaDocs

标签: java


【解决方案1】:

使用clear() method

 orderItems.clear();

还有

需要关注的主要是其他代码可能对列表有引用。

喜欢阅读@Skeets 答案:Better practice to re-instantiate a List or invoke clear()

【讨论】:

    【解决方案2】:

    像这样使用clear() methodorderItems.clear()
    它从此列表中删除所有元素。此调用返回后列表将为空。

    【讨论】:

      【解决方案3】:

      您可以使用ArrayList#clear()

      从此列表中删除所有元素。此调用返回后,列表将为空。

      使用 clear() ,您无需创建新的 ArrayList 对象。它只是清空ArrayList

      orderItems.clear();
      orderItems.trimToSize();
      

      【讨论】:

        【解决方案4】:

        Collection 接口本身定义了一个void clear(); 方法。

        /**
         * Removes all of the elements from this collection (optional operation).
         * The collection will be empty after this method returns.
         *
         * @throws UnsupportedOperationException if the <tt>clear</tt> operation
         *         is not supported by this collection
         */
        

        在您的按钮 actionListner 中,只需使用 orderItems.clear();。这将删除该集合的所有元素(在您的情况下为 ArrayList)。

            myButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    orderItems.clear();
        
                }
            });
        

        【讨论】:

          【解决方案5】:

          ArrayList 中有一个内置方法。因此您可以在 orderdItems 上实现它,例如:

          orderedItems.clear()
          

          还要检查这个: http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

          【讨论】:

            【解决方案6】:

            可以通过调用 clear 方法清空 ArrayList

            orderItems.clear();

            【讨论】:

              【解决方案7】:

              在您设置的按钮中添加ActionListener

              orderItems = new ArrayList();
              

              这将删除列表中的每个项目。

              【讨论】:

              • 这是一个新的同名变量 --> 不会编译。
              • @jlordo 它肯定会编译,但你会隐藏 orderItems 字段并且根本不会发生太多事情。
              • @kritzikratzi:没错。
              • @jlordo 已编辑。不知道这是怎么回事。
              • @AdrianJandl:撤销了我的反对票,尽管它仍然不准确。这不会从列表中删除任何项目,它会创建一个新列表并将其分配给变量。如果另一个列表不再被引用,它就有资格进行垃圾回收。
              猜你喜欢
              • 2020-11-05
              • 1970-01-01
              • 1970-01-01
              • 2021-03-05
              • 2011-08-18
              • 2013-12-07
              • 2014-03-20
              • 2015-04-15
              相关资源
              最近更新 更多