美文网首页
基于二分搜索树和链表实现的Set集合

基于二分搜索树和链表实现的Set集合

作者: 不服输的小蜗牛 | 来源:发表于2020-06-19 09:47 被阅读0次

    什么是Set集合?
    set集合是无序的,不可指定位置访问,不包含重复元素的集合,比如说我们要统计一本英语书中有多少的单词量,这个时候我们就可以使用set集合来存储单词。

    二分搜索树来实现Set集合。首先定义个接口类型的Set类,规定好BSTSet和LinkedSet里面的共同方法

    
    public interface Set<E> {
    
        void add(E e);
    
        void remove(E e);
    
        boolean contains(E e);
    
        int getSize();
    
    }
    
    

    二分搜索树树中的元素都是具有可比性的,所以存储的元素都有继承Comparable类

    public class BSTSet <E extends Comparable<E>> implements Set<E> {
    
        private BSTree<E> bsTree;
    
        public BSTSet() {
            bsTree = new BSTree<>();
        }
    
        @Override
        public void add(E e) {
            bsTree.add(e);
        }
    
        @Override
        public void remove(E e) {
            bsTree.remove(e);
        }
    
        @Override
        public boolean contains(E e) {
            return bsTree.contains(e);
        }
    
        @Override
        public int getSize() {
            return bsTree.getSize();
        }
    }
    
    
    

    LinkedSet

    public class LinkedSet<E> implements Set<E> {
        private LinkedList<E> linkedList;
    
        public LinkedSet() {
            linkedList = new LinkedList<>();
        }
    
        @Override
        public void add(E e) {
            //set集合中存储的元素中没有重复元素,
        //所以在链表添加时,要先判断下是否包含,如果不包含在去添加元素
            if(!linkedList.contains(e)){
                linkedList.addFirst(e);
            }
        }
    
        @Override
        public void remove(E e) {
            linkedList.remove(e);
        }
    
        @Override
        public boolean contains(E e) {
            return linkedList.contains(e);
        }
    
        @Override
        public int getSize() {
            return linkedList.getSize();
        }
    }
    
    
    
    方法 BSTSet时间复杂度 LinkedSet时间复杂度
    add O(n) O(logn)
    remove O(n) O(logn)
    contains O(n) O(logn)

    相关文章

      网友评论

          本文标题:基于二分搜索树和链表实现的Set集合

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