📌  相关文章
📜  Java中的 AbstractCollection 和示例(1)

📅  最后修改于: 2023-12-03 15:16:19.786000             🧑  作者: Mango

Java中的 AbstractCollection 和示例

AbstractCollection 是 Java 集合框架中的一个抽象类,它实现了 Collection 接口的大部分方法,提供了一些通用的方法和默认实现。其他的集合类可以继承 AbstractCollection 并实现其中的一些抽象方法来快速构建自定义的集合。

继承关系

AbstractCollection 类的继承关系如下所示:

java.lang.Object
    java.util.AbstractCollection<E>

AbstractCollection 类继承自 Object 类,实现了 Collection 接口。

主要方法

AbstractCollection 类实现了 Collection 接口中的大部分方法,并提供了一些通用的方法。

一些常用的方法包括:

  • size():返回集合中的元素个数。
  • isEmpty():判断集合是否为空。
  • contains(Object o):判断集合中是否包含指定的元素。
  • iterator():返回一个迭代器,可以用于遍历集合中的元素。
  • toArray():将集合转换为一个数组。
  • add(E e):向集合中添加指定的元素。
  • remove(Object o):从集合中移除指定的元素。
  • containsAll(Collection<?> c):判断集合是否包含指定集合中的所有元素。
  • addAll(Collection<? extends E> c):将指定集合中的所有元素添加到集合中。
  • removeAll(Collection<?> c):从集合中移除指定集合中的所有元素。
  • clear():清空集合中的所有元素。
示例

下面是一个使用 AbstractCollection 的示例代码:

import java.util.AbstractCollection;
import java.util.Iterator;

public class MyCollection<E> extends AbstractCollection<E> {
    private E[] elements;
    private int size;

    public MyCollection(E[] elements) {
        this.elements = elements;
        this.size = elements.length;
    }

    public int size() {
        return size;
    }

    public Iterator<E> iterator() {
        return new Iterator<E>() {
            private int index = 0;

            public boolean hasNext() {
                return index < size;
            }

            public E next() {
                return elements[index++];
            }
        };
    }

    // 示例中省略了其他抽象方法的实现
}

示例中定义了一个 MyCollection 类,它继承自 AbstractCollection 类,并实现了其中的部分抽象方法。通过重写 size()iterator() 方法,我们可以自定义集合的大小和迭代器的行为。

public class Main {
    public static void main(String[] args) {
        String[] items = {"A", "B", "C"};
        MyCollection<String> collection = new MyCollection<>(items);

        System.out.println("集合大小:" + collection.size());
        System.out.println("集合是否为空:" + collection.isEmpty());

        System.out.println("遍历集合:");
        for (String item : collection) {
            System.out.println(item);
        }
    }
}

运行以上示例代码,输出结果如下:

集合大小:3
集合是否为空:false
遍历集合:
A
B
C

以上示例展示了一个自定义的集合类 MyCollection,通过继承 AbstractCollection 类并实现部分抽象方法,我们可以快速构建自己的集合。