集合
集合可以存储不重复的元素。
public interface Set<E> {
/**
* 添加元素
*
* @param e 要添加的元素
*/
void add(E e);
/**
* 删除元素
*
* @param e 要删除的元素
*/
void remove(E e);
/**
* 是否包含指定元素
*
* @param e
* @return
*/
boolean contains(E e);
/**
* 是否包含元素
*
* @return
*/
boolean isEmpty();
/**
* 获取包含的元素个数
*
* @return
*/
int getSize();
}
基于二分搜索树的集合
public class BSTSet<E extends Comparable<E>> implements Set<E> {
/**
* 底层基于二分搜索树
*/
private BST<E> 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 boolean isEmpty() {
return bst.isEmpty();
}
@Override
public int getSize() {
return bst.getSize();
}
}
基于链表的集合
public class LinkedListSet<E> implements Set<E> {
/**
* 底层基于链表
*/
private LinkedList<E> list;
/**
* 构造函数
*/
public LinkedListSet() {
list = new LinkedList<>();
}
@Override
public void add(E e) {
if (!contains(e)) {
list.addFirst(e);
}
}
@Override
public void remove(E e) {
list.removeElement(e);
}
@Override
public boolean contains(E e) {
return list.contains(e);
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public int getSize() {
return list.getSize();
}
}