В чем разница между removeAllElements () и clear () для DefaultListModel? - PullRequest
3 голосов
/ 24 мая 2011

В чем разница между removeAllElements() и clear() методом DefaultListModel в java swing?

Документация Java для DefaultListModel говорит: -

public void clear ()

Удаляет все элементы из этого списка. Список будет быть пустым после возврата этого вызова (если только не выдается исключение).

и

public void removeAllElements ()

Удаляет все компоненты из этого списка. и устанавливает его размер на ноль.

Итак, оба в основном удаляют все элементы из списка, так в чем же разница? Как решить, когда использовать какой?

1 Ответ

4 голосов
/ 24 мая 2011

Они оба одинаковы.

DefaultListModel использует Vector под капотом.
Метод clear () был добавлен позже, когда Vector был переписан для соответствия API-интерфейсам Collection.

С версией 1.3 Collections API сделал свой 'вход, поэтому Vector был переписан для соответствия интерфейсу List.

Для обеспечения обратной совместимости они просто переадресовывали вызовы к старым существующим методам, где это возможно и возможно.

EDIT

Из источника Java:

/**
 * 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);
        }

}
...