基于链表实现集合

定义接口

定义集合的接口Set.java,使它支持泛型。

public interface Set<E> {
    void add(E e); // 添加元素 不能添加重复元素

    void remove(E e);  // 删除元素

    boolean contains(E e); // 查看集合是否包含某个元素

    int getSize();  // 获得集合元素个数

    boolean isEmpty(); // 判断集合是否为空
}

实现集合类

调用链表类LinkedList.java,是我的另一篇学习笔记《实现一个属于自己的链表类》中使用递归底层实现的类,完整的链表类在第七节。
基于链表实现的集合类LinkedListSet.java,实现接口时只调用了链表的5个方法,分别是在链表头添加元素,删除链表中的元素,链表大小,是否为空和是否包含某一元素,需要注意的是链表类可以添加重复的元素,在往集合中添加元素时,需要进行if条件处理,确保不能添加重复的元素
LinkedListSet.java

public class LinkedListSet<E> implements Set<E> {
    private LinkedList<E> list;

    public LinkedListSet() {
        list = new LinkedList<>();
    }

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

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

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

    @Override
    public void add(E e){
        // 集合没有重复元素,不包含时添加
        if(!list.contains(e))
            list.addFirst(e);
    }

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

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/106072127