数据结构之集合

集合

使用二分搜索树实现不可重复的集合

创建Set接口以及实现类。

public interface Set {
        void add(E e);
        void remove(E e);
        boolean contains(E e);
        int getSize();
        boolean isEmpty();
}
public class BSTSet> implements Set {
        private BST 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 int getSize() {
            return bst.size();
        }
        @Override
        public boolean isEmpty() {
            return bst.isEmpty();
        }
}

使用链表来实现不可重复的集合

public class LinkedListSet implements Set {
        private LinkedList linkedList;
        public LinkedListSet() {
            linkedList = new LinkedList<>();
        }
        @Override
        public void add(E e) {
            //判断是否存在当前元素e
            if (!linkedList.contains(e)){
                linkedList.addFirst(e);
            }
        }
        @Override
        public void remove(E e) {
            linkedList.removeElement(e);
        }
        @Override
        public boolean contains(E e) {
            return linkedList.contains(e);
        }
        @Override
        public int getSize() {
            return linkedList.getSize();
        }
        @Override
        public boolean isEmpty() {
            return linkedList.isEmpty();
        }
}

集合复杂度分析

操作 LinkedListSet BSTSet
增 add O(n) O(logn)
查 contains O(n) O(logn)
删 remove O(n) O(logn)

你可能感兴趣的:(java,数据结构)