DefaultListModel的removeAllElements()和clear()有什么区别?

时间:2011-05-24 06:40:01

标签: java swing defaultlistmodel

java swing中removeAllElements()的{​​{1}}和clear()方法有什么区别?

java docs for DefaultListModel说: -

  

public void clear()

     

删除所有   此列表中的元素。清单会   此调用返回后为空   (除非它抛出异常)。

  

public void removeAllElements()

     

从此列表中删除所有组件   并将其大小设置为零。

所以两者基本上都从列表中删除了所有元素,那么区别是什么?如何决定何时使用哪个?

1 个答案:

答案 0 :(得分:4)

他们都是一样。

DefaultListModel在引擎盖下使用Vector 稍后在重写Vector以适合Collection API的时候添加了clear()方法。

使用版本1.3 Collections API进入'{1}},以便重新编写Vector以适应List界面。

为了使其向后兼容,他们只是将呼叫转发到现有的旧方法(如果可用的话)。可能的。

修改

来自Java Source:

/**
 * Removes all components from this list and sets its size to zero.
 * <blockquote>
 * <b>Note:</b> Although this method is not deprecated, the preferred
 *    method to use is <code>clear</code>, which implements the 
 *    <code>List</code> interface defined in the 1.2 Collections framework.
 * </blockquote>
 *
 * @see #clear()
 * @see Vector#removeAllElements()
 */
public void removeAllElements() {

        int index1 = delegate.size()-1;
        delegate.removeAllElements();

        if (index1 >= 0) {
            fireIntervalRemoved(this, 0, index1);
        }

}