Java中的AbstractCollection add()方法:示例

Java中的AbstractCollection add()方法:示例

在Java中,AbstractCollection是所有集合类的抽象基类。它实现了大多数的集合接口方法,让子类只需要继承它并根据自身特性实现少数接口方法即可。其中就包含了add方法。

在AbstractCollection类中,add方法的定义如下:

public boolean add(E e) {
    throw new UnsupportedOperationException();
}

这里定义了一个抛出UnsupportedOperationException异常的方法。子类必须实现它才能使用。

下面我们来看一个ArrayList的示例,它继承了AbstractCollection,并实现了add方法:

import java.util.AbstractCollection;
import java.util.ArrayList;

public class MyList extends AbstractCollection<String> {

    private ArrayList<String> list = new ArrayList<>();

    @Override
    public boolean add(String str) {
        return list.add(str);
    }

    @Override
    public int size() {
        return list.size();
    }

    @Override
    public String toString() {
        return list.toString();
    }

    public static void main(String[] args) {
        MyList myList = new MyList();
        myList.add("Hello");
        myList.add("World");
        System.out.println(myList);
    }
}

这段代码中,我们自定义了一个集合类MyList,它继承了AbstractCollection类,并实现了add方法。在add方法中,我们调用了ArrayList的add方法来添加元素。同时我们还实现了size方法和toString方法来获取集合大小和输出集合内容。

运行该程序,输出如下:

[Hello, World]

可以看到我们自定义的集合类MyList成功地添加了两个元素,并成功输出了集合内容。

除了ArrayList,其他继承AbstractCollection的集合类也需要实现add方法。例如,HashSet的add方法的定义如下:

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}

该方法将元素作为键值对加入到HashSet的底层HashMap中,并返回添加是否成功。

再例如,LinkedList的add方法的定义如下:

public boolean add(E e) {
    linkLast(e);
    return true;
}

void linkLast(E e) {
    final Node<E> l = last;
    final Node<E> newNode = new Node<>(l, e, null);
    last = newNode;
    if (l == null)
        first = newNode;
    else
        l.next = newNode;
    size++;
    modCount++;
}

该方法将元素加入到LinkedList的尾部,并返回添加是否成功。

在使用继承了AbstractCollection的自定义集合类时,我们只需要实现即可使用这些集合类与Java内置集合类如ArrayList、HashSet、LinkedList 一样。通过实现add方法可以给集合类添加元素,实现size方法可以获取集合大小。

结论

在Java中,AbstractCollection是所有集合类的抽象基类。熟练掌握继承它的子类中add方法的实现方式,能更加灵活地使用Java内置集合类或自定义集合类,提高代码的可重用性、可扩展性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程