数据结构 (一) 数组实现一个简单的 ArrayList
数据结构 (二) 链表实现 LinkedList
数据结构 (三) 用两种方式简单实现栈
数据结构 (四) 栈和队列的简单应用
数据结构 (五) 用两种方式简单实现队列
数据结构 (六) 二分搜索树(Binary Search Tree)(上)
数据结构 (六) 二分搜索树(Binary Search Tree)(下)
先列一下 set 的几个简单的接口方法
- public interface Set<E>{
- void add(E e);
- void remove(E e);
- boolean contain(E e);
- int getSize();
- boolean isEmpty();
- }
这几个方法都是我们常用的方法, 这里我就不啰嗦解释了 .
二分搜索树实现 set 二分搜索树 BST
- 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
LinkedList 实现 LinkedList
- 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);
- }
- }
这两个实现都比较简单, 都是简单调用之前的方法.
来源: http://www.jianshu.com/p/d30b7aaf0ada