数据结构(一)数组实现一个简单的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();
}
这几个方法都是我们常用的方法,这里我就不啰嗦解释了 。
- 二分搜索树实现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);
}
}
这两个实现都比较简单,都是简单调用之前的方法。
网友评论