集合可以存储不重复的元素。

public interface Set<E> {

    /**
     * 添加元素
     *
     * @param e 要添加的元素
     */
    void add(E e);

    /**
     * 删除元素
     *
     * @param e 要删除的元素
     */
    void remove(E e);

    /**
     * 是否包含指定元素
     *
     * @param e
     * @return
     */
    boolean contains(E e);

    /**
     * 是否包含元素
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 获取包含的元素个数
     *
     * @return
     */
    int getSize();

}

基于二分搜索树的集合

public class BSTSet<E extends Comparable<E>> implements Set<E> {

    /**
     * 底层基于二分搜索树
     */
    private BST<E> bst;

    /**
     * 构造函数
     */
    public BSTSet() {
        bst = new BST<>();
    }

    @Override
    public void add(E e) {
        bst.add(e);
    }

    @Override
    public void remove(E e) {
        bst.remove(e);
    }

    @Override
    public boolean contains(E e) {
        return bst.contains(e);
    }

    @Override
    public boolean isEmpty() {
        return bst.isEmpty();
    }

    @Override
    public int getSize() {
        return bst.getSize();
    }
}

基于链表的集合

public class LinkedListSet<E> implements Set<E> {

    /**
     * 底层基于链表
     */
    private LinkedList<E> list;

    /**
     * 构造函数
     */
    public LinkedListSet() {
        list = new LinkedList<>();
    }

    @Override
    public void add(E e) {
        if (!contains(e)) {
            list.addFirst(e);
        }
    }

    @Override
    public void remove(E e) {
        list.removeElement(e);
    }

    @Override
    public boolean contains(E e) {
        return list.contains(e);
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

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

标签: 集合, set