美文网首页程序员
数据结构(七)两种方式实现set

数据结构(七)两种方式实现set

作者: Merlin_720 | 来源:发表于2019-08-24 10:18 被阅读0次

数据结构(一)数组实现一个简单的ArrayList
数据结构(二)链表实现LinkedList
数据结构(三)用两种方式简单实现栈
数据结构(四)栈和队列的简单应用
数据结构(五)用两种方式简单实现队列
数据结构(六)二分搜索树(Binary Search Tree)(上)
数据结构(六)二分搜索树(Binary Search Tree)(下)
数据结构(七)两种方式实现set
数据结构(八)两种方式实现map
数据结构(九)set解决LeetCode349号问题

先列一下set的几个简单的接口方法

public interface Set<E>{
    void add(E e);
    void remove(E e);
    boolean contain(E e);
    int getSize();
    boolean isEmpty();
}
这几个方法都是我们常用的方法,这里我就不啰嗦解释了 。
public class BSTSet<E extends Comparable<E>> implements Set<E> {

   private  BST<E> bst;

   public BSTSet (){
       bst = new BST<>();
   }
   @Override
    public int getSize(){
       return bst.size();
   }
   @Override
    public boolean isEmpty(){
       return bst.isEmpty();
   }
   @Override
    public boolean contain(E e){
       return bst.contains(e);
   }
   @Override
    public void add(E e){
       bst.add(e);
   }

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

这里是二分搜索树实现的set,因为不存在相同的两个元素,直接调用二分搜索树的方法就可以了。二分搜索树的内部都有详细的注释,有不明白的小伙伴可以去里边看。 二分搜索树BST

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 contain(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);
    }
}

这两个实现都比较简单,都是简单调用之前的方法。

相关文章

网友评论

    本文标题:数据结构(七)两种方式实现set

    本文链接:https://www.haomeiwen.com/subject/qsufectx.html