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

发布于 2024-11-08 23:58:06 字数 500 浏览 0 评论 0原文

java swing中DefaultListModelremoveAllElements()clear()方法有什么区别?

DefaultListModel 的 Java 文档 说:-

公共无效清除()

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

公共无效removeAllElements()

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

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

What is the difference between removeAllElements() and clear() method of DefaultListModel in java swing?

The java docs for DefaultListModel says :-

public void clear()

Removes all of the
elements from this list. The list will
be empty after this call returns
(unless it throws an exception).

and

public void removeAllElements()

Removes all components from this list
and sets its size to zero.

So both basically removes all elements from list so what is the difference? How to decide when to use which?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

大姐,你呐 2024-11-15 23:58:06

它们是相同的。

DefaultListModel 在底层使用 Vector
后来重写 Vector 以适应 Collection API 时添加了clear() 方法。

在 1.3 版本中,Collections API 开始出现,因此 Vector 被重写以适应 List 接口。

为了使其向后兼容,他们只是将调用转发到可用的旧现有方法。可能的。

代码编辑

从 Java 源


<前><代码>/**
* 从此列表中删除所有组件并将其大小设置为零。
* <块引用>
* 注:尽管此方法并未被弃用,但首选方法
* 使用的方法是clear,它实现了
* <代码>列表 1.2 Collections 框架中定义的接口。
*
*
* @参见#clear()
* @see Vector#removeAllElements()
*/

public void removeAllElements() {

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

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

}

They are both same.

DefaultListModel uses a Vector under the hood.
The clear() method was added later when Vector was re-written to fit into the Collection API's.

With version 1.3 the Collections API made its' entrance so the Vector was re-written to fit into the List interface.

In order for it to be backwards compatible, they simply forwarded the calls to the old existing methods where available & possible.

EDIT

From 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);
        }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文